50 const Euler& orientation)
noexcept
60 const auto x1 = quatPsi * x0;
61 const auto y1 = quatPsi * y0;
67 const auto x2 = quatTheta * x1;
68 const auto y2 = quatTheta * y1;
74 const auto x3 = quatPhi * x2;
75 const auto y3 = quatPhi * y2;
81 const auto yaw = std::atan2(x3.dot(yHat0), x3.dot(xHat0));
82 const auto pitch = std::atan(-x3.dot(zHat0) /
std::hypot(x3.dot(xHat0), x3.dot(yHat0)));
87 const auto roll = std::atan2(y3.dot(zHat2), y3.dot(yHat2));
static constexpr Vec3 up() noexcept
Definition: Vec3.hpp:349
static constexpr Vec3 forward() noexcept
Definition: Vec3.hpp:235
static constexpr Vec3 right() noexcept
Definition: Vec3.hpp:313
Euler.
Definition: Euler.hpp:40
Orientation.
Definition: Orientation.hpp:40
ECEF coordinates.
Definition: ECEF.hpp:40
Holds a unit quaternion.
Definition: Quaternion.hpp:56
double hypot(dtype inValue1, dtype inValue2) noexcept
Definition: hypot.hpp:56
double wrap(dtype inAngle) noexcept
Wrap the input angle to [-pi, pi].
Definition: wrap.hpp:45
NdArray< dtype > roll(const NdArray< dtype > &inArray, int32 inShift, Axis inAxis=Axis::NONE)
Definition: roll.hpp:52