From d8e0a9589039128b963bdc00cefa28b19ce4a2ff Mon Sep 17 00:00:00 2001 From: Alex Cunningham Date: Mon, 3 Sep 2012 03:06:08 +0000 Subject: [PATCH] Small bug-fixes for managing linearization points --- gtsam_unstable/nonlinear/LinearContainerFactor.cpp | 2 +- gtsam_unstable/nonlinear/LinearContainerFactor.h | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gtsam_unstable/nonlinear/LinearContainerFactor.cpp b/gtsam_unstable/nonlinear/LinearContainerFactor.cpp index fa44d3e93..e6c49b318 100644 --- a/gtsam_unstable/nonlinear/LinearContainerFactor.cpp +++ b/gtsam_unstable/nonlinear/LinearContainerFactor.cpp @@ -205,7 +205,7 @@ GaussianFactor::shared_ptr LinearContainerFactor::negate(const Ordering& orderin /* ************************************************************************* */ NonlinearFactor::shared_ptr LinearContainerFactor::negate() const { GaussianFactor::shared_ptr antifactor = factor_->negate(); // already has keys in place - return NonlinearFactor::shared_ptr(new LinearContainerFactor(antifactor)); + return NonlinearFactor::shared_ptr(new LinearContainerFactor(antifactor,linearizationPoint_)); } /* ************************************************************************* */ diff --git a/gtsam_unstable/nonlinear/LinearContainerFactor.h b/gtsam_unstable/nonlinear/LinearContainerFactor.h index 9affcc29e..a8f7cd399 100644 --- a/gtsam_unstable/nonlinear/LinearContainerFactor.h +++ b/gtsam_unstable/nonlinear/LinearContainerFactor.h @@ -23,6 +23,11 @@ protected: GaussianFactor::shared_ptr factor_; boost::optional linearizationPoint_; + /** direct copy constructor */ + LinearContainerFactor(const GaussianFactor::shared_ptr& factor, + const boost::optional& linearizationPoint) + : factor_(factor), linearizationPoint_(linearizationPoint) {} + public: /** Primary constructor: store a linear factor and decode the ordering */ @@ -105,7 +110,7 @@ public: * Clones the underlying linear factor */ NonlinearFactor::shared_ptr clone() const { - return NonlinearFactor::shared_ptr(new LinearContainerFactor(factor_)); + return NonlinearFactor::shared_ptr(new LinearContainerFactor(factor_,linearizationPoint_)); } // casting syntactic sugar