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;
|