コード例 #1
0
ファイル: RobotNode.cpp プロジェクト: TheMarex/simox
std::vector<RobotNodePtr> RobotNode::getAllParents( RobotNodeSetPtr rns )
{
	std::vector<RobotNodePtr> result;
	if (!rns)
		return result;
	std::vector<RobotNodePtr> rn = rns->getAllRobotNodes();

	for (unsigned int i=0; i<rn.size(); i++)
	{
		if (rn[i]->hasChild(static_pointer_cast<SceneObject>(shared_from_this()),true))
			result.push_back(rn[i]);
	}
	return result;
}
コード例 #2
0
ファイル: CoMIK.cpp プロジェクト: TheMarex/simox
    CoMIK::CoMIK(RobotNodeSetPtr rnsJoints, RobotNodeSetPtr rnsBodies, RobotNodePtr coordSystem, int dimensions)
	: JacobiProvider(rnsJoints), coordSystem(coordSystem)
{
	VR_ASSERT(rns);
	VR_ASSERT(rnsBodies);
	checkImprovement = false;
	this->rnsBodies = rnsBodies;
    numDimensions = dimensions;

	bodyNodes = rnsBodies->getAllRobotNodes();
	for (size_t i = 0; i < bodyNodes.size(); i++)
	{
		// get all joints that influence the body
		std::vector<RobotNodePtr> parentsN = bodyNodes[i]->getAllParents(rns);
		bodyNodeParents[bodyNodes[i]] = parentsN;
	}
	if (rnsBodies->getMass()==0)
	{
		VR_ERROR << "The RNS does not contain any bodies or masses are not specified (mass==0)" << endl;
	}
}