Actor* addAxis1() { Actor* actor = new Actor; TransformComponent* trans = new TransformComponent(); trans->setPos(vec3(5, 0, 5)); Rotation rot; rot.setQuaternion(quat(vec3(0, 1.57, 0))); trans->setRotation(rot); actor->addComponent(trans); MeshGraphicComponent* mesh = new MeshGraphicComponent(AssetManager::getBasePath() + "Data/Model/axis.obj"); Material *mat = new Material(); mat->setDiffuse("#FF0000"); mesh->addMaterial(mat); Material *mat1 = new Material(); mat1->setDiffuse("#00FF00"); mesh->addMaterial(mat1); mesh->addMaterial(mat1); Material *mat2 = new Material(); mat2->setDiffuse("#0000FF"); mesh->addMaterial(mat2); actor->addComponent(mesh); return actor; }
/*! * @brief It rotates for the specification of the relative angle. * @param[in] x-axis rotation weather(i of quaternion complex part) * @param[in] y-axis rotation weather(j of quaternion complex part) * @param[in] z-axis rotation weather(k of quaternion complex part) * @param[in] flag for ansolute / relational (1.0=absolute, else=relational) */ void SimObjBase::setAxisAndAngle(double ax, double ay, double az, double angle, double direct) { // The angle is used now at the relative angle specification. if (dynamics()) { return; } Rotation r; if (direct != 1.0) r.setQuaternion(qw(), qx(), qy(), qz()); // alculate relational angle r.setAxisAndAngle(ax, ay, az, angle, direct); const dReal *q = r.q(); setQ(q); }
void SParts::calcPosture() { assert(isBody()); if (m_children.size() <= 0) { return; } const dReal *pos = getPosition(); const dReal *q = getQuaternion(); for (ChildC::iterator i=m_children.begin(); i!=m_children.end(); i++) { Child *child = *i; Vector3d v(pos[0], pos[1], pos[2]); Rotation r; r.setQuaternion(q); if (child->currj) { v += child->currj->getAnchor(); } child->nextp->calcPosition(child->currj, child->nextj, v, r); } }