20#ifndef _ROTATION_ABOUT_AXES_XYZ_H_
21#define _ROTATION_ABOUT_AXES_XYZ_H_
23#include "mbsim/functions/kinematics/rotation_about_three_axes.h"
24#include "mbsim/functions/kinematics/rotation_about_axes_xyz_mapping.h"
25#include "mbsim/functions/kinematics/rotation_about_axes_xyz_transformed_mapping.h"
34 using B = fmatvec::Function<fmatvec::RotMat3(Arg)>;
40 fmatvec::RotMat3 operator()(
const Arg &q)
override {
51 A.e(1,0) = sina*sinb*cosg+cosa*sing;
52 A.e(2,0) = -cosa*sinb*cosg+sina*sing;
53 A.e(0,1) = -cosb*sing;
54 A.e(1,1) = -sing*sinb*sina+cosa*cosg;
55 A.e(2,1) = cosa*sinb*sing+sina*cosg;
57 A.e(1,2) = -sina*cosb;
61 typename B::DRetDArg parDer(
const Arg &q)
override {
68 Element::throwError(
"Singularity in rotation.");
74 J.e(1,2) = -sina*cosb;
80 typename B::DRetDArg parDerDirDer(
const Arg &qd,
const Arg &q)
override {
94 Jd.e(1,2) = -cosa*cosb*ad + sina*sinb*bd;
97 Jd.e(2,2) = -sina*cosb*ad - cosa*sinb*bd;
Definition: function.h:53
Definition: rotation_about_axes_xyz_mapping.h:28
rotation class for rotation about all three axes using the cardan description
Definition: rotation_about_axes_xyz.h:33
rotation class for rotation about three axes
Definition: rotation_about_three_axes.h:31
namespace MBSim
Definition: bilateral_constraint.cc:30