2424#include < Eigen/Core>
2525#include < memory>
2626
27+ #include " matrix.h"
28+
2729// ! Geometric constraints (relations)
2830namespace Constraint {
2931
@@ -32,6 +34,7 @@ using Eigen::MatrixXd;
3234using Eigen::Vector3d;
3335using Eigen::VectorXd;
3436using Eigen::VectorXi;
37+ using Eigen::VectorXidx;
3538
3639// ! Base class for constraints
3740class ConstraintBase
@@ -70,10 +73,10 @@ class ConstraintBase
7073 void setEnforced ( const bool b) { m_enforced = b; } // !< Set status success of enforcement
7174
7275 // ! Compute Jacobian w.r.t. observations
73- [[nodiscard]] virtual MatrixXd Jacobian ( const VectorXi &idxx,
76+ [[nodiscard]] virtual MatrixXd Jacobian ( const Eigen::VectorXidx &idxx,
7477 const VectorXd &l0, const VectorXd &l) const = 0;
7578 // ! Compute contradictions with adjusted observations
76- [[nodiscard]] virtual VectorXd contradict ( const VectorXi &idxx,
79+ [[nodiscard]] virtual VectorXd contradict ( const VectorXidx &idxx,
7780 const VectorXd &l0 ) const = 0;
7881
7982 // ! Check if constraint is of a certain, specified type
@@ -99,8 +102,8 @@ class ConstraintBase
99102class Copunctual : public ConstraintBase
100103{
101104public:
102- [[nodiscard]] MatrixXd Jacobian ( const VectorXi &idxx, const VectorXd &l0, const VectorXd &l) const override ;
103- [[nodiscard]] VectorXd contradict ( const VectorXi &idxx, const VectorXd &l0) const override ;
105+ [[nodiscard]] MatrixXd Jacobian ( const VectorXidx &idxx, const VectorXd &l0, const VectorXd &l) const override ;
106+ [[nodiscard]] VectorXd contradict ( const VectorXidx &idxx, const VectorXd &l0) const override ;
104107 [[nodiscard]] int dof () const override {return s_dof;}
105108 [[nodiscard]] int arity () const override {return s_arity;} // !< number of involved entities
106109
@@ -123,8 +126,8 @@ class Copunctual : public ConstraintBase
123126class Parallel : public ConstraintBase
124127{
125128public:
126- [[nodiscard]] MatrixXd Jacobian ( const VectorXi &idxx, const VectorXd &l0, const VectorXd &l) const override ;
127- [[nodiscard]] VectorXd contradict ( const VectorXi &idxx, const VectorXd &l0) const override ;
129+ [[nodiscard]] MatrixXd Jacobian ( const VectorXidx &idxx, const VectorXd &l0, const VectorXd &l) const override ;
130+ [[nodiscard]] VectorXd contradict ( const VectorXidx &idxx, const VectorXd &l0) const override ;
128131 [[nodiscard]] int dof () const override { return s_dof; }
129132 [[nodiscard]] int arity () const override { return s_arity; }
130133
@@ -146,8 +149,8 @@ class Parallel : public ConstraintBase
146149class Vertical : public ConstraintBase
147150{
148151public:
149- [[nodiscard]] MatrixXd Jacobian ( const VectorXi &idxx, const VectorXd &l0, const VectorXd &l) const override ;
150- [[nodiscard]] VectorXd contradict ( const VectorXi &idxx, const VectorXd &l0) const override ;
152+ [[nodiscard]] MatrixXd Jacobian ( const VectorXidx &idxx, const VectorXd &l0, const VectorXd &l) const override ;
153+ [[nodiscard]] VectorXd contradict ( const VectorXidx &idxx, const VectorXd &l0) const override ;
151154 [[nodiscard]] int dof () const override { return s_dof; }
152155 [[nodiscard]] int arity () const override { return s_arity; }
153156
@@ -170,8 +173,8 @@ class Vertical : public ConstraintBase
170173class Horizontal : public ConstraintBase
171174{
172175public:
173- [[nodiscard]] MatrixXd Jacobian ( const VectorXi &idxx, const VectorXd &l0, const VectorXd &l) const override ;
174- [[nodiscard]] VectorXd contradict ( const VectorXi &idxx, const VectorXd &l0) const override ;
176+ [[nodiscard]] MatrixXd Jacobian ( const VectorXidx &idxx, const VectorXd &l0, const VectorXd &l) const override ;
177+ [[nodiscard]] VectorXd contradict ( const VectorXidx &idxx, const VectorXd &l0) const override ;
175178 [[nodiscard]] int dof () const override { return s_dof; }
176179 [[nodiscard]] int arity () const override { return s_arity; }
177180
@@ -194,8 +197,8 @@ class Horizontal : public ConstraintBase
194197class Diagonal : public ConstraintBase
195198{
196199public:
197- [[nodiscard]] MatrixXd Jacobian ( const VectorXi &idxx, const VectorXd &l0, const VectorXd &l) const override ;
198- [[nodiscard]] VectorXd contradict ( const VectorXi &idxx, const VectorXd &l0) const override ;
200+ [[nodiscard]] MatrixXd Jacobian ( const VectorXidx &idxx, const VectorXd &l0, const VectorXd &l) const override ;
201+ [[nodiscard]] VectorXd contradict ( const VectorXidx &idxx, const VectorXd &l0) const override ;
199202 [[nodiscard]] int dof () const override { return s_dof; }
200203 [[nodiscard]] int arity () const override { return s_arity; }
201204
@@ -216,8 +219,8 @@ class Diagonal : public ConstraintBase
216219class Orthogonal : public ConstraintBase
217220{
218221public:
219- [[nodiscard]] MatrixXd Jacobian ( const VectorXi &idxx, const VectorXd &l0, const VectorXd &l) const override ;
220- [[nodiscard]] VectorXd contradict ( const VectorXi &idxx, const VectorXd &l0) const override ;
222+ [[nodiscard]] MatrixXd Jacobian ( const VectorXidx &idxx, const VectorXd &l0, const VectorXd &l) const override ;
223+ [[nodiscard]] VectorXd contradict ( const VectorXidx &idxx, const VectorXd &l0) const override ;
221224 [[nodiscard]] int dof () const override { return s_dof; }
222225 [[nodiscard]] int arity () const override { return s_arity; }
223226
@@ -239,8 +242,8 @@ class Orthogonal : public ConstraintBase
239242class Identical : public ConstraintBase
240243{
241244public:
242- [[nodiscard]] MatrixXd Jacobian ( const VectorXi &idxx, const VectorXd &l0, const VectorXd &l) const override ;
243- [[nodiscard]] VectorXd contradict ( const VectorXi &idxx, const VectorXd &l0) const override ;
245+ [[nodiscard]] MatrixXd Jacobian ( const VectorXidx &idxx, const VectorXd &l0, const VectorXd &l) const override ;
246+ [[nodiscard]] VectorXd contradict ( const VectorXidx &idxx, const VectorXd &l0) const override ;
244247 [[nodiscard]] int dof () const override {return s_dof;}
245248 [[nodiscard]] int arity () const override {return s_arity;}
246249
0 commit comments