Fixed the member function with very ugly syntax
parent
c68c2d2dac
commit
837b2a6bc0
|
@ -26,6 +26,8 @@ namespace gtsam {
|
|||
|
||||
template<typename T>
|
||||
class Expression;
|
||||
template<typename T, typename E1, typename E2>
|
||||
class MethodExpression;
|
||||
|
||||
/**
|
||||
* Expression node. The superclass for objects that do the heavy lifting
|
||||
|
@ -218,8 +220,8 @@ private:
|
|||
expression1_(e1.root()), expression2_(e2.root()), f_(f) {
|
||||
}
|
||||
|
||||
friend class Expression<T> ;
|
||||
|
||||
friend class Expression<T>;
|
||||
public:
|
||||
/// Combine Jacobians
|
||||
static void combine(const Matrix& H1, const Matrix& H2,
|
||||
const JacobianMap& terms1, const JacobianMap& terms2,
|
||||
|
@ -288,9 +290,9 @@ public:
|
|||
|
||||
typedef std::map<Key, Matrix> JacobianMap;
|
||||
|
||||
typedef boost::function<
|
||||
T(const E1*, const E2&, boost::optional<Matrix&>,
|
||||
boost::optional<Matrix&>)> method;
|
||||
typedef
|
||||
T (E1::*method)(const E2&, boost::optional<Matrix&>,
|
||||
boost::optional<Matrix&>) const;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -326,11 +328,11 @@ public:
|
|||
if (jacobians) {
|
||||
JacobianMap terms1, terms2;
|
||||
Matrix H1, H2;
|
||||
val = f_(expression1_->value(values, terms1),
|
||||
val = (expression1_->value(values, terms1).*(f_))(
|
||||
expression2_->value(values, terms2), H1, H2);
|
||||
BinaryExpression<T, E1, E2>::combine(H1, H2, terms1, terms2, *jacobians);
|
||||
} else {
|
||||
val = f_(expression1_->value(values), expression2_->value(values),
|
||||
val = (expression1_->value(values).*(f_))(expression2_->value(values),
|
||||
boost::none, boost::none);
|
||||
}
|
||||
return val;
|
||||
|
|
|
@ -63,7 +63,7 @@ public:
|
|||
typename MethodExpression<T, E1, E2>::method f,
|
||||
const Expression<E2>& expression2) {
|
||||
// TODO Assert that root of expressions 1 and 2 are not null.
|
||||
root_.reset(new MethodExpression<T, E1, E2>(f, expression1, expression2));
|
||||
root_.reset(new MethodExpression<T, E1, E2>(expression1, f, expression2));
|
||||
}
|
||||
|
||||
/// Return keys that play in this expression
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
* See LICENSE for the license information
|
||||
|
||||
* -------------------------------------------------------------------------- */
|
||||
* -------------------------------1------------------------------------------- */
|
||||
|
||||
/**
|
||||
* @file testExpression.cpp
|
||||
|
@ -60,8 +60,8 @@ TEST(BAD, test) {
|
|||
// Create expression tree
|
||||
// MethodExpression<Point3,Pose3,Point3>::method m = &Pose3::transform_to;
|
||||
// MethodExpression<Point3,Pose3,Point3> methodExpression(x, &Pose3::transform_to, p);
|
||||
// Expression<Point3> p_cam(x, &Pose3::transform_to, p);
|
||||
Expression<Point3> p_cam(transformTo, x, p);
|
||||
Expression<Point3> p_cam(x, &Pose3::transform_to, p);
|
||||
//Expression<Point3> p_cam(transformTo, x, p);
|
||||
Expression<Point2> projection(project, p_cam);
|
||||
Expression<Point2> uv_hat(uncalibrate<Cal3_S2>, K, projection);
|
||||
|
||||
|
|
Loading…
Reference in New Issue