18struct QuadraticDistanceCostTpl : QuadraticResidualCostTpl<_Scalar> {
19 using Scalar = _Scalar;
23 using Base = QuadraticResidualCostTpl<Scalar>;
27 QuadraticDistanceCostTpl(
const polymorphic<Manifold> &space,
28 const ConstVectorRef &target,
29 const ConstMatrixRef &weights)
30 : Base(std::make_shared<StateResidual>(space, target), weights) {}
32 QuadraticDistanceCostTpl(
const polymorphic<Manifold> &space,
33 const ConstVectorRef &target)
34 : QuadraticDistanceCostTpl(
35 space, target, MatrixXs::Identity(space->ndx(), space->ndx())) {}
37 QuadraticDistanceCostTpl(
const polymorphic<Manifold> &space)
38 : QuadraticDistanceCostTpl(space, space->neutral()) {}
40 ConstVectorRef getTarget()
const {
41 return static_cast<StateResidual *
>(
residual_.get())->target_;
44 void updateTarget(
const ConstVectorRef &x) {
45 static_cast<StateResidual *
>(
residual_.get())->target_ = x;