1 #ifndef SimTK_SIMMATRIX_SPATIAL_ALGEBRA_H_
2 #define SimTK_SIMMATRIX_SPATIAL_ALGEBRA_H_
153 const Vec3 p_AB_F = X_FB.
p() - X_FA.
p();
194 const Vec3 w_AB_F = V_FB[0] - V_FA[0];
196 const Vec3 p_AB_F_dot = V_FB[1] - V_FA[1];
199 const Vec3 v_AB_F = p_AB_F_dot - V_FA[0] % p_AB_F;
252 const Vec3 p_AB_F = X_FB.
p() - X_FA.
p();
301 const Vec3& w_FA = V_FA[0];
302 const Vec3& w_FB = V_FB[0];
303 const Vec3& b_FA = A_FA[0];
304 const Vec3& b_FB = A_FB[0];
306 const Vec3 p_AB_F_dot = V_FB[1] - V_FA[1];
307 const Vec3 p_AB_F_dotdot = A_FB[1] - A_FA[1];
312 p_AB_F_dot - w_FA % p_AB_F;
314 const Vec3 w_AB_F_dot = b_FB - b_FA;
315 const Vec3 v_AB_F_dot =
316 p_AB_F_dotdot - (b_FA % p_AB_F + w_FA % p_AB_F_dot);
322 w_AB_F_dot - w_FA % w_AB_F;
324 v_AB_F_dot - w_FA % v_AB_F;
371 return ~X_AB.
R()*V_BA_A;
454 {
return SpatialVec( V_AB[0], V_AB[1] + V_AB[0] % r_A ); }
540 A_AB[1] + A_AB[0] % r_A + w_AB % (w_AB % r_A) ); }
626 {
return SpatialVec(F_AP[0] - r_A % F_AP[1], F_AP[1]); }
683 class PhiMatrixTranspose;
700 const Vec3&
l()
const {
return l_; }
719 inline PhiMatrixTranspose
726 inline PhiMatrixTranspose
742 return SpatialMat( m(0,0) + x*m(1,0), m(0,1) + x*m(1,1),
751 v[1] + v[0] % phiT.
l());
760 return SpatialMat( m(0,0) - m(0,1) * x, m(0,1),
761 m(1,0) - m(1,1) * x, m(1,1) );
766 const PhiMatrixTranspose& phiT)
769 return SpatialMat( m(0,0) - m(0,1) * x, m(0,1),
770 m(1,0) - m(1,1) * x, m(1,1) );
776 return p1.
l() == p2.
l();
782 return p1.
l() == p2.
l();
786 #endif // SimTK_SIMMATRIX_SPATIAL_ALGEBRA_H_