string MuscleOptimizer::getIndependentCoordinate(Model& model, const std::string& dofName) { ConstraintSet constraintSet = model.getConstraintSet(); for (int n = 0; n < constraintSet.getSize(); ++n) { CoordinateCouplerConstraint* constraint = dynamic_cast<CoordinateCouplerConstraint*>(&constraintSet.get(n)); if (constraint != NULL) // we can only handle this type of constraint, so we just skip the others { string depCoordinateName = constraint->getDependentCoordinateName(); if (depCoordinateName == dofName) { const Array<std::string>& indepCoordinateNamesSet = constraint->getIndependentCoordinateNames(); if (indepCoordinateNamesSet.getSize() == 1) { return indepCoordinateNamesSet.get(0); } else if (indepCoordinateNamesSet.getSize() > 1) { std::cout << "CoordinateCouplerConstraint with dependent coordinate " << dofName << " has more than one indipendent coordinate and this is not managed by this software yet." << std::endl; return ""; } } } } return ""; }