WarpTwin
Documentation for WarpTwin models and classes.
Loading...
Searching...
No Matches
Quaternion.h
Go to the documentation of this file.
1/******************************************************************************
2* Copyright (c) ATTX LLC 2024. All Rights Reserved.
3*
4* This software and associated documentation (the "Software") are the
5* proprietary and confidential information of ATTX, LLC. The Software is
6* furnished under a license agreement between ATTX and the user organization
7* and may be used or copied only in accordance with the terms of the agreement.
8* Refer to 'license/attx_license.adoc' for standard license terms.
9*
10* EXPORT CONTROL NOTICE: THIS SOFTWARE MAY INCLUDE CONTENT CONTROLLED UNDER THE
11* INTERNATIONAL TRAFFIC IN ARMS REGULATIONS (ITAR) OR THE EXPORT ADMINISTRATION
12* REGULATIONS (EAR99). No part of the Software may be used, reproduced, or
13* transmitted in any form or by any means, for any purpose, without the express
14* written permission of ATTX, LLC.
15******************************************************************************/
16/*
17Quaternion header file
18
19Author: Alex Reynolds
20*/
21#ifndef SIX_DOF_DYNAMICS_QUATERNION_HPP
22#define SIX_DOF_DYNAMICS_QUATERNION_HPP
23
24#include <cmath>
25
26#include "core/Matrix.hpp"
28#include "core/safemath.h"
29#include "core/matrixmath.hpp"
30
31#include "DCM.h"
32
33namespace clockwerk {
35 const uint8 QUATERNION_NUM_ELEMENTS = 4;
36
38 class MRP;
39
68 class Quaternion : public CartesianVector<QUATERNION_NUM_ELEMENTS> {
69 public:
72 Quaternion();
73
76 Quaternion(const floating_point(&initial)[QUATERNION_NUM_ELEMENTS]);
77
80 Quaternion(const Quaternion &initial);
81
84 Quaternion(const std::array<floating_point, QUATERNION_NUM_ELEMENTS> &initial);
85
89
91 Quaternion& operator=(const Quaternion& other);
92
96 Quaternion operator*(const Quaternion& other) const;
97
101 CartesianVector<3> operator*(const CartesianVector<3>& vec__f2) const;
102
112 void rate(const CartesianVector<3> &omega_f1_f2__f1, Matrix<QUATERNION_NUM_ELEMENTS, 1> &quatdot_f1_f2) const;
113 void rate(const Matrix<3, 1> &omega_f1_f2__f1, Matrix<QUATERNION_NUM_ELEMENTS, 1> &quatdot_f1_f2) const;
114
121 void toDCM(DCM &dcm_f1_f2) const;
122 DCM toDCM() const;
123
127 void toMRP(MRP &mrp_f1_f2) const;
128 MRP toMRP() const;
129
133 int16 rotationAngle(floating_point &val) const;
134 floating_point rotationAngle() const;
135
143 void inverse(Quaternion &quat_f2_f1) const;
144 Quaternion inverse() const;
145
151
158
163 void dRotatedVec_dQuat(const CartesianVector<3> &vec__f2, Matrix<3, QUATERNION_NUM_ELEMENTS> &jacobian) const;
165
172 };
173
174}
175
176#endif
Standard vector class derived from Matrix.
Definition CartesianVector.hpp:39
CartesianVector()
Definition CartesianVector.hpp:45
Class defining a direction cosine matrix inherited from Matrix.
Definition DCM.h:69
Modified Rodrigues Parameter class definiton.
Definition MRP.h:65
Matrix math implementation.
Definition Matrix.hpp:55
Quaternion class for attitude representation.
Definition Quaternion.h:68
void dInvRotatedVec_dQuat(const CartesianVector< 3 > &vec__f1, Matrix< 3, QUATERNION_NUM_ELEMENTS > &jacobian) const
Function to compute the partial derivative of quat_f2_f1*vec__f1 with respect to quat_f1_f2 (note the...
Definition Quaternion.cpp:211
Matrix< QUATERNION_NUM_ELEMENTS, 3 > dRate_dOmega() const
Definition Quaternion.cpp:176
void rate(const CartesianVector< 3 > &omega_f1_f2__f1, Matrix< QUATERNION_NUM_ELEMENTS, 1 > &quatdot_f1_f2) const
Function to calculate the rate of change in the current representation based on the omega vector.
Definition Quaternion.cpp:67
Quaternion operator*(const Quaternion &other) const
Multiplication operator overload for quaternion to quaternion multiplication.
Definition Quaternion.cpp:48
DCM toDCM() const
Definition Quaternion.cpp:107
floating_point rotationAngle() const
Definition Quaternion.cpp:152
void dRotatedVec_dQuat(const CartesianVector< 3 > &vec__f2, Matrix< 3, QUATERNION_NUM_ELEMENTS > &jacobian) const
Function to compute the partial derivative of quat_f1_f2*vec__f2 with respect to quat_f1_f2.
Definition Quaternion.cpp:194
Quaternion()
Default constructor generates Quaternion sequence as zero rotation – 1 0 0 0.
Definition Quaternion.cpp:23
Quaternion & operator=(const Quaternion &other)
Equals operator overload for quaternion.
Definition Quaternion.cpp:35
~Quaternion()
Definition Quaternion.h:88
void dRate_dQuat(const CartesianVector< 3 > &omega_f1_f2__f1, Matrix< QUATERNION_NUM_ELEMENTS, QUATERNION_NUM_ELEMENTS > &jacobian) const
Function to compute the partial derivative of dq/dt (Quaternion::rate) with respect to quat_f1_f2.
Definition Quaternion.cpp:182
MRP toMRP() const
Definition Quaternion.cpp:137
Quaternion inverse() const
Definition Quaternion.cpp:164
Definition CircularBuffer.hpp:28
const uint8 QUATERNION_NUM_ELEMENTS
Constant for the number of elements in a quaternion.
Definition Quaternion.h:35