@@ -244,19 +244,28 @@ namespace ompl
244
244
class ConstraintIntersection : public Constraint
245
245
{
246
246
public:
247
+ /* * \brief Constructor. If constraints is empty assume it will be
248
+ * filled later. */
249
+ ConstraintIntersection (const unsigned int ambientDim, std::vector<ConstraintPtr> constraints)
250
+ : Constraint(ambientDim, 0 )
251
+ {
252
+ for (const auto &constraint : constraints)
253
+ addConstraint (constraint);
254
+ }
255
+
247
256
/* * \brief Constructor. If constraints is empty assume it will be
248
257
* filled later. */
249
258
ConstraintIntersection (const unsigned int ambientDim, std::initializer_list<ConstraintPtr> constraints)
250
259
: Constraint(ambientDim, 0 )
251
260
{
252
- for (auto constraint : constraints)
261
+ for (const auto & constraint : constraints)
253
262
addConstraint (constraint);
254
263
}
255
264
256
265
void function (const Eigen::Ref<const Eigen::VectorXd> &x, Eigen::Ref<Eigen::VectorXd> out) const override
257
266
{
258
267
unsigned int i = 0 ;
259
- for (auto constraint : constraints_)
268
+ for (const auto & constraint : constraints_)
260
269
{
261
270
constraint->function (x, out.segment (i, constraint->getCoDimension ()));
262
271
i += constraint->getCoDimension ();
@@ -266,15 +275,15 @@ namespace ompl
266
275
void jacobian (const Eigen::Ref<const Eigen::VectorXd> &x, Eigen::Ref<Eigen::MatrixXd> out) const override
267
276
{
268
277
unsigned int i = 0 ;
269
- for (auto constraint : constraints_)
278
+ for (const auto & constraint : constraints_)
270
279
{
271
280
constraint->jacobian (x, out.block (i, 0 , constraint->getCoDimension (), n_));
272
281
i += constraint->getCoDimension ();
273
282
}
274
283
}
275
284
276
285
protected:
277
- void addConstraint (ConstraintPtr constraint)
286
+ void addConstraint (const ConstraintPtr & constraint)
278
287
{
279
288
setManifoldDimension (k_ - constraint->getCoDimension ());
280
289
constraints_.push_back (constraint);
0 commit comments