From: Markus R. <rol...@us...> - 2007-07-15 10:41:15
|
Update of /cvsroot/simspark/simspark/contrib/rsgedit In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv470 Modified Files: kinematicframe.cpp kinematicframe.h Log Message: - support kinematic control for second universal joint axis Index: kinematicframe.h =================================================================== RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/kinematicframe.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** kinematicframe.h 15 Jul 2007 10:29:53 -0000 1.2 --- kinematicframe.h 15 Jul 2007 10:41:10 -0000 1.3 *************** *** 74,77 **** --- 74,78 ---- protected: + int GetParamVel(int axis) const; void AddJointControl(boost::shared_ptr<oxygen::Joint> joint, int axis); void OnSliderChanged(wxCommandEvent& event); Index: kinematicframe.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/kinematicframe.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** kinematicframe.cpp 15 Jul 2007 10:29:53 -0000 1.2 --- kinematicframe.cpp 15 Jul 2007 10:41:10 -0000 1.3 *************** *** 144,148 **** { shared_ptr<Joint> joint = shared_static_cast<Joint>(*iter); ! AddJointControl(joint, 0); } --- 144,158 ---- { shared_ptr<Joint> joint = shared_static_cast<Joint>(*iter); ! ! switch (joint->GetType()) ! { ! case dJointTypeUniversal: ! AddJointControl(joint, 0); ! AddJointControl(joint, 1); ! ! default: ! AddJointControl(joint, 0); ! break; ! } } *************** *** 254,259 **** --- 264,276 ---- } + int kinematicFrame::GetParamVel(int axis) const + { + return (axis == 0) ? dParamVel : dParamVel2; + } + void kinematicFrame::MoveJoint(JointControl& entry) { + int paramVel = GetParamVel(entry.axis); + switch (entry.type) { *************** *** 270,277 **** { entry.mode = CM_PASSIV; ! hinge->SetParameter(dParamVel, 0); } else { ! hinge->SetParameter(dParamVel, GetJointVel(diff)); } break; --- 287,294 ---- { entry.mode = CM_PASSIV; ! hinge->SetParameter(paramVel, 0); } else { ! hinge->SetParameter(paramVel, GetJointVel(diff)); } break; *************** *** 282,294 **** shared_ptr<UniversalJoint> universal = shared_static_cast<UniversalJoint>(entry.joint.lock()); ! int value_joint = static_cast<int>(universal->GetAngle(static_cast<Joint::EAxisIndex>(entry.axis))); int diff = (entry.target - value_joint); if (abs(diff) < MIN_JOINT_DIFF) { entry.mode = CM_PASSIV; ! universal->SetParameter(dParamVel, 0); } else { ! universal->SetParameter(dParamVel, GetJointVel(diff)); } break; --- 299,314 ---- shared_ptr<UniversalJoint> universal = shared_static_cast<UniversalJoint>(entry.joint.lock()); ! int value_joint = static_cast<int> ! (universal->GetAngle(static_cast<Joint::EAxisIndex>(entry.axis))); int diff = (entry.target - value_joint); + + if (abs(diff) < MIN_JOINT_DIFF) { entry.mode = CM_PASSIV; ! universal->SetParameter(paramVel, 0); } else { ! universal->SetParameter(paramVel, GetJointVel(diff)); } break; |