20#ifndef _ROTATION_ABOUT_AXES_ZYX_H_
21#define _ROTATION_ABOUT_AXES_ZYX_H_
23#include "mbsim/functions/kinematics/rotation_about_three_axes.h"
24#include "mbsim/functions/kinematics/rotation_about_axes_zyx_mapping.h"
25#include "mbsim/functions/kinematics/rotation_about_axes_zyx_transformed_mapping.h"
31 using B = fmatvec::Function<fmatvec::RotMat3(Arg)>;
37 fmatvec::RotMat3 operator()(
const Arg &q)
override {
50 A.e(0,1) = -sina*cosg+cosa*sinb*sing;
51 A.e(1,1) = cosa*cosg+sina*sinb*sing;
53 A.e(0,2) = sina*sing+cosa*sinb*cosg;
54 A.e(1,2) = -cosa*sing+sina*sinb*cosg;
58 typename B::DRetDArg parDer(
const Arg &q)
override {
65 Element::throwError(
"Singularity in rotation.");
77 typename B::DRetDArg parDerDirDer(
const Arg &qd,
const Arg &q)
override {
87 Jd.e(0,2) = -sina*cosb*ad - cosa*sinb*bd;
89 Jd.e(1,2) = cosa*cosb*ad - sina*sinb*bd;
Definition: function.h:53
Definition: rotation_about_axes_zyx_mapping.h:28
Definition: rotation_about_axes_zyx.h:30
rotation class for rotation about three axes
Definition: rotation_about_three_axes.h:31
namespace MBSim
Definition: bilateral_constraint.cc:30