1 #define BIORBD_API_EXPORTS 
    2 #include "Utils/RotoTrans.h" 
    4 #include "Utils/Error.h" 
    5 #include "Utils/Vector3d.h" 
    6 #include "Utils/String.h" 
    7 #include "Utils/Vector.h" 
    8 #include "Utils/Rotation.h" 
   10 #include "RigidBody/NodeSegment.h" 
   13         const RigidBodyDynamics::Math::Matrix4d& matrix) :
 
   14     RigidBodyDynamics::Math::Matrix4d(matrix)
 
   20         const biorbd::utils::Scalar& v00, 
const biorbd::utils::Scalar& v01, 
const biorbd::utils::Scalar& v02, 
const biorbd::utils::Scalar& v03,
 
   21         const biorbd::utils::Scalar& v10, 
const biorbd::utils::Scalar& v11, 
const biorbd::utils::Scalar& v12, 
const biorbd::utils::Scalar& v13,
 
   22         const biorbd::utils::Scalar& v20, 
const biorbd::utils::Scalar& v21, 
const biorbd::utils::Scalar& v22, 
const biorbd::utils::Scalar& v23,
 
   23         const biorbd::utils::Scalar& v30, 
const biorbd::utils::Scalar& v31, 
const biorbd::utils::Scalar& v32, 
const biorbd::utils::Scalar& v33) :
 
   24     RigidBodyDynamics::Math::Matrix4d (v00, v01, v02, v03,
 
   34     RigidBodyDynamics::Math::Matrix4d(combineRotAndTrans(rot, biorbd::utils::
Vector3d::Zero()))
 
   42     RigidBodyDynamics::Math::Matrix4d(combineRotAndTrans(rot,trans))
 
   51     RigidBodyDynamics::Math::Matrix4d(fromEulerAngles(rotation, translation, rotationSequence))
 
   57         const RigidBodyDynamics::Math::SpatialTransform& st) :
 
   58     RigidBodyDynamics::Math::Matrix4d(fromSpatialTransform(st))
 
   65         const std::pair<biorbd::rigidbody::NodeSegment, biorbd::rigidbody::NodeSegment> &axis1markers,
 
   66         const std::pair<biorbd::rigidbody::NodeSegment, biorbd::rigidbody::NodeSegment> &axis2markers,
 
   67         const std::pair<biorbd::utils::String, biorbd::utils::String>& axesNames,
 
   71     rt_out.block(0, 0, 3, 3) = 
Rotation::fromMarkers(axis1markers, axis2markers, axesNames, axisToRecalculate);
 
   72     rt_out.block(0, 3, 3, 1) = origin;
 
   79                 idx<=2, 
"Axis must be between 0 and 2 included");
 
   80     return static_cast<RigidBodyDynamics::Math::VectorNd
>(rot().block(0,idx,3,1));
 
   86     tp.block(0, 0, 3, 3) = block(0, 0, 3, 3).
transpose();
 
   87     tp.block(0, 3, 3, 1) = -tp.block(0, 0, 3, 3) * block(0, 3, 3, 1);
 
   88     tp.block(3, 0, 1, 4) = RigidBodyDynamics::Math::Vector4d(0, 0, 0, 1).
transpose();
 
   94     return this->block<3, 1>(0,3);
 
   99     return this->block<3, 3>(0,0);
 
  106     out.block(0,0,3,3) = rot;
 
  107     out.block(0,3,3,1) = trans;
 
  108     out.block(3, 0, 1, 4) = RigidBodyDynamics::Math::Vector4d(0, 0, 0, 1).
transpose();
 
  113         const RigidBodyDynamics::Math::SpatialTransform& st)
 
  115     return combineRotAndTrans(st.E,st.r);
 
  127     out.block(0, 0, 3, 3) = rot_mat;
 
  128     out.block(0, 3, 3, 1) = trans;
 
  139 #ifndef BIORBD_USE_CASADI_MATH 
  143     RigidBodyDynamics::Math::Vector3d v_tp;
 
  145     for (
unsigned int i = 0; i<mToMean.size(); ++i){
 
  146         v_tp += mToMean[i].
trans();
 
  148     v_tp = v_tp/mToMean.size();
 
  151     std::vector<biorbd::utils::Rotation> rotations;
 
  152     for (
unsigned int i=0; i<mToMean.size(); ++i){
 
  153         rotations.push_back(mToMean[i].block<3, 3>(0, 0));
 
  163     RigidBodyDynamics::Math::Vector4d v2;
 
  164     v2.block(0,0,3,1) = v1;
 
  171 #ifndef BIORBD_USE_CASADI_MATH 
  175                                 "Last row of the RotoTrans should be (0,0,0,1");
 
  177                                 "Last row of the RotoTrans should be (0,0,0,1");
 
  184     os << a.block(0,0,4,4);