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), 
 
  752                        m(1,0),    m(1,0)*x + m(1,1) ); 
 
  760                       v[1] + v[0] % phiT.
l());  
 
  769                       m(1,0)-x*m(0,0), m(1,1)-x*m(0,1)); 
 
  777     return SpatialMat( m(0,0) - m(0,1) * x, m(0,1),     
 
  778                        m(1,0) - m(1,1) * x, m(1,1) );   
 
  786     return SpatialMat( m(0,0) - m(0,1) * x, m(0,1),     
 
  787                        m(1,0) - m(1,1) * x, m(1,1) );   
 
  793     return p1.
l() == p2.
l();
 
  799     return p1.
l() == p2.
l();
 
This file is the user-includeable header to be included in user programs to provide fixed-length Vec ...
 
This class represents a small matrix whose size is known at compile time, containing elements of any ...
Definition: Mat.h:97
 
Definition: SpatialAlgebra.h:705
 
PhiMatrixTranspose(const PhiMatrix &phi)
Definition: SpatialAlgebra.h:707
 
const Vec3 & l() const
Definition: SpatialAlgebra.h:714
 
SpatialMat toSpatialMat() const
Definition: SpatialAlgebra.h:709
 
Definition: SpatialAlgebra.h:685
 
PhiMatrixTranspose TransposeType
Definition: SpatialAlgebra.h:687
 
void setToZero()
Definition: SpatialAlgebra.h:692
 
void setToNaN()
Definition: SpatialAlgebra.h:693
 
PhiMatrix()
Definition: SpatialAlgebra.h:689
 
SpatialMat toSpatialMat() const
Definition: SpatialAlgebra.h:695
 
PhiMatrix(const Vec3 &l)
Definition: SpatialAlgebra.h:690
 
const Vec3 & l() const
Definition: SpatialAlgebra.h:700
 
void setToNaN()
Set every scalar in this Vec to NaN; this is the default initial value in Debug builds,...
Definition: Vec.h:812
 
Mat< 3, 3 > Mat33
This is the most common 3x3 matrix type: three packed columns of 3 Real values each.
Definition: SmallMatrix.h:142
 
Vec< 3 > Vec3
This is the most common 3D vector type: a column of 3 Real values stored consecutively in memory (pac...
Definition: SmallMatrix.h:129
 
Vec< 2, Vec3 > SpatialVec
Spatial vectors are used for (rotation,translation) quantities and consist of a pair of Vec3 objects,...
Definition: MassProperties.h:50
 
SpatialVec findRelativeVelocity(const Transform &X_FA, const SpatialVec &V_FA, const Transform &X_FB, const SpatialVec &V_FB)
Find the relative spatial velocity between two frames A and B whose individual spatial velocities are...
Definition: SpatialAlgebra.h:148
 
SpatialVec shiftForceBy(const SpatialVec &F_AP, const Vec3 &r_A)
Shift a spatial force applied at some point of a body to that same spatial force applied at a new poi...
Definition: SpatialAlgebra.h:625
 
SpatialVec reverseRelativeVelocity(const Transform &X_AB, const SpatialVec &V_AB)
Given the relative velocity of frame B in frame A, reverse that to give the relative velocity of fram...
Definition: SpatialAlgebra.h:364
 
SpatialVec shiftAccelerationBy(const SpatialVec &A_AB, const Vec3 &w_AB, const Vec3 &r_A)
Shift a relative spatial acceleration measured at some point to that same relative spatial quantity b...
Definition: SpatialAlgebra.h:536
 
SpatialVec shiftVelocityFromTo(const SpatialVec &V_A_BP, const Vec3 &fromP_A, const Vec3 &toQ_A)
Shift a relative spatial velocity measured at some point P to that same relative spatial quantity but...
Definition: SpatialAlgebra.h:493
 
Mat< 2, 2, Mat33 > SpatialMat
Spatial matrices are used to hold 6x6 matrices that are best viewed as 2x2 matrices of 3x3 matrices; ...
Definition: MassProperties.h:72
 
SpatialVec shiftVelocityBy(const SpatialVec &V_AB, const Vec3 &r_A)
Shift a relative spatial velocity measured at some point to that same relative spatial quantity but m...
Definition: SpatialAlgebra.h:453
 
SpatialVec shiftForceFromTo(const SpatialVec &F_AP, const Vec3 &fromP_A, const Vec3 &toQ_A)
Shift a spatial force applied at some point P of a body to that same spatial force applied at a new p...
Definition: SpatialAlgebra.h:668
 
Row< 2, Row3 > SpatialRow
This is the type of a transposed SpatialVec; it does not usually appear explicitly in user programs.
Definition: MassProperties.h:60
 
SpatialVec findRelativeVelocityInF(const Vec3 &p_AB_F, const SpatialVec &V_FA, const SpatialVec &V_FB)
Find the relative spatial velocity between two frames A and B whose individual spatial velocities are...
Definition: SpatialAlgebra.h:189
 
SpatialVec findRelativeAcceleration(const Transform &X_FA, const SpatialVec &V_FA, const SpatialVec &A_FA, const Transform &X_FB, const SpatialVec &V_FB, const SpatialVec &A_FB)
Find the relative spatial acceleration between two frames A and B whose individual spatial accelerati...
Definition: SpatialAlgebra.h:245
 
SpatialVec shiftAccelerationFromTo(const SpatialVec &A_A_BP, const Vec3 &w_AB, const Vec3 &fromP_A, const Vec3 &toQ_A)
Shift a relative spatial acceleration measured at some point P to that same relative spatial quantity...
Definition: SpatialAlgebra.h:585
 
SpatialVec findRelativeAccelerationInF(const Vec3 &p_AB_F, const SpatialVec &V_FA, const SpatialVec &A_FA, const SpatialVec &V_FB, const SpatialVec &A_FB)
Find the relative spatial acceleration between two frames A and B whose individual spatial accelerati...
Definition: SpatialAlgebra.h:295
 
SpatialVec reverseRelativeVelocityInA(const Transform &X_AB, const SpatialVec &V_AB)
Given the relative velocity of frame B in frame A, reverse that to give the relative velocity of fram...
Definition: SpatialAlgebra.h:408
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
PhiMatrixTranspose transpose(const PhiMatrix &phi)
Definition: SpatialAlgebra.h:720
 
PhiMatrixTranspose operator~(const PhiMatrix &phi)
Definition: SpatialAlgebra.h:727
 
Mat< 3, 3, E > crossMat(const Vec< 3, E, S > &v)
Calculate matrix M(v) such that M(v)*w = v % w.
Definition: SmallMatrixMixed.h:649
 
Matrix_< E > operator*(const MatrixBase< E > &l, const typename CNT< E >::StdNumber &r)
Definition: BigMatrix.h:605
 
bool operator==(const PhiMatrix &p1, const PhiMatrix &p2)
Definition: SpatialAlgebra.h:791
 
Transform_< Real > Transform
Definition: Transform.h:44