1#ifndef ATTITUDE_UTILS_H
2#define ATTITUDE_UTILS_H
An Attitude is an immutable object that represents the orientation of a 3D point.
Definition attitude-utils.hpp:243
Quaternion GetQuaternion() const
Provides the Quaternion corresponding to this Attitude.
Definition attitude-utils.cpp:745
EulerAngles ToSpherical() const
Obtains the Euler Angles of this Attitude.
Definition attitude-utils.cpp:798
Quaternion quaternion
Internal Quaternion Representation.
Definition attitude-utils.hpp:267
Mat3 dcm
Internal DCM Representation.
Definition attitude-utils.hpp:269
AttitudeType
Represents what internal representation for attitude is being used.
Definition attitude-utils.hpp:257
@ NullType
No Internal representation.
Definition attitude-utils.hpp:259
@ DCMType
DCM Internal Representation.
Definition attitude-utils.hpp:263
@ QuaternionType
Quaternion Internal Representation.
Definition attitude-utils.hpp:261
AttitudeType type
Internal Representation Type.
Definition attitude-utils.hpp:271
Vec3 Rotate(const Vec3 &) const
Obtains a vector rotated to this Attitude from another vector (Convert a vector from the reference fr...
Definition attitude-utils.cpp:781
Mat3 GetDCM() const
Obtains the rotation matrix from this Attitude.
Definition attitude-utils.cpp:762
An EulerAngle is a mutable Object representing Euler Angles of a 3D point.
Definition attitude-utils.hpp:165
decimal ra
Right ascension. How far we yaw left. Yaw is performed first.
Definition attitude-utils.hpp:180
decimal de
Declination. How far we pitch up (or down if negative). Pitch is performed second,...
Definition attitude-utils.hpp:182
decimal roll
How far we roll counterclockwise. Roll is performed last (after yaw and pitch).
Definition attitude-utils.hpp:184
constexpr EulerAngles(decimal ra=DECIMAL(0.0), decimal de=DECIMAL(0.0), decimal roll=DECIMAL(0.0))
Initializes an EulerAngles with corresponding parameters.
Definition attitude-utils.hpp:174
A Mat3 is a mutable object that represents a 3x3 Matrix.
Definition attitude-utils.hpp:117
decimal Det() const
Obtains the determinant of this Matrix.
Definition attitude-utils.cpp:632
decimal Trace() const
Obtains the trace of this Matrix.
Definition attitude-utils.cpp:623
Mat3 operator+(const Mat3 &) const
Matrix Addition.
Definition attitude-utils.cpp:568
decimal At(int i, int j) const
Obtains an entry in this Matrix.
Definition attitude-utils.cpp:541
Vec3 Row(int) const
Obtains one of the row vectors in this Matrix.
Definition attitude-utils.cpp:563
Mat3 Transpose() const
Obtains the transpose of this Matrix.
Definition attitude-utils.cpp:610
decimal x[9]
The matrix entries.
Definition attitude-utils.hpp:120
Mat3 Inverse() const
Obtains the inverse of this Matrix.
Definition attitude-utils.cpp:643
Vec3 Column(int) const
Obtains one of the column vectors in this Matrix.
Definition attitude-utils.cpp:552
Mat3 operator*(const Mat3 &) const
Matrix Multiplication.
Definition attitude-utils.cpp:577
A Quaternion is a mutable object that represents a Quaternion.
Definition attitude-utils.hpp:192
Quaternion(decimal real, decimal i, decimal j, decimal k)
Creates a Quaternion with components.
Definition attitude-utils.hpp:208
decimal Angle() const
Provides the amount of rotations represented by this Quaterion.
Definition attitude-utils.cpp:91
Vec3 Vector() const
The vector formed by imaginary components of the quaternion. The axis of the represented rotation.
Definition attitude-utils.cpp:35
Vec3 Rotate(const Vec3 &) const
Rotates a vector about this Quaternion.
Definition attitude-utils.cpp:81
bool IsUnit(decimal tolerance) const
Tells client if this Quarternion is a unit quaternion.
Definition attitude-utils.cpp:117
decimal j
The j component.
Definition attitude-utils.hpp:228
decimal real
The real component.
Definition attitude-utils.hpp:224
Quaternion Conjugate() const
Effectively computes a quaternion representing the inverse rotation of the original.
Definition attitude-utils.cpp:30
Quaternion Canonicalize() const
Provides the canonicalized Quaternion of this, if it is not already canonicalized.
Definition attitude-utils.cpp:129
decimal i
The i component.
Definition attitude-utils.hpp:226
void SetAngle(decimal)
Changes the rotation represented in this quarterion.
Definition attitude-utils.cpp:106
Quaternion operator*(const Quaternion &other) const
Multiply two quaternions using the usual definition of quaternion multiplication (effectively compose...
Definition attitude-utils.cpp:16
Quaternion operator-() const
Negate the quaternion, which is the same rotation.
Definition attitude-utils.cpp:25
EulerAngles ToSpherical() const
Converts this Quarterion to a new system of Euler Angles by extracting the rotations described by thi...
Definition attitude-utils.cpp:147
decimal k
The k component.
Definition attitude-utils.hpp:230
void SetVector(const Vec3 &)
Set imaginary components of Quarterion.
Definition attitude-utils.cpp:44
A Vec3 is a mutable object that represents a 3D Vector.
Definition attitude-utils.hpp:47
Mat3 OuterProduct(const Vec3 &) const
Computes the outer product between this and another vector.
Definition attitude-utils.cpp:408
decimal z
The z coordinate.
Definition attitude-utils.hpp:54
decimal y
The y coordinate.
Definition attitude-utils.hpp:52
decimal getDeclination() const
Obtains the Declination of this vector.
Vec3 operator-() const
Vector Negation.
Definition attitude-utils.cpp:366
Vec3 & operator+=(const Vec3 &)
Vector Addition.
Definition attitude-utils.cpp:371
Vec3()
Default construction of the Vector.
Definition attitude-utils.hpp:68
decimal Magnitude() const
Provides the magnitude of this Vec3.
Definition attitude-utils.cpp:292
decimal getRightAscension() const
Obtains the Right Ascension of this vector.
decimal operator*(const Vec3 &) const
Dot product (Scalar product)
Definition attitude-utils.cpp:331
Vec3 operator/(const decimal &) const
Vector division.
Definition attitude-utils.cpp:380
constexpr Vec3(decimal x, decimal y, decimal z)
Construction of vector with x, y, and z components.
Definition attitude-utils.hpp:63
decimal MagnitudeSq() const
Provides the square of the magnitude of this Vec3.
Definition attitude-utils.cpp:274
Vec3 CrossProduct(const Vec3 &) const
Computes the cross (vector) product between this and another vector.
Definition attitude-utils.cpp:392
decimal x
The x coordinate.
Definition attitude-utils.hpp:50
Vec3 Normalize() const
Provides the magnitude of this Vec2.
Definition attitude-utils.cpp:323
double decimal
Definition decimal.hpp:15
#define DECIMAL(x)
Definition decimal.hpp:25
#define DECIMAL_M_PI
Definition decimal.hpp:33
Definition calibrate.cpp:7
decimal ArcSecToRad(decimal arcSec)
Calculates an angle from an inverse secant value.
Definition attitude-utils.cpp:261
constexpr decimal DegToRad(decimal deg)
Converts an angle in degrees to radians.
Definition attitude-utils.hpp:329
decimal AngleUnit(const Vec3 &vec1, const Vec3 &vec2)
Determines the angle between two different vectors.
Definition attitude-utils.cpp:499
const Mat3 kIdentityMat3
3x3 identity matrix
Definition attitude-utils.cpp:657
void SpatialToSpherical(const Vec3 &vec, decimal &ra, decimal &de)
Converts a unit vector on the unit sphere to a spherical direction.
Definition attitude-utils.cpp:229
decimal RadToArcSec(decimal rad)
Calculates the approximate value for the inverse secant of an angle.
Definition attitude-utils.cpp:248
Vec3 SphericalToSpatial(const decimal ra, const decimal de)
Converts spherical direction to a unit vector on the unit sphere.
Definition attitude-utils.cpp:210
Vec3 DeserializeVec3(const unsigned char *buffer)
Deserializes a Vec3 from a buffer.
Definition attitude-utils.cpp:856
decimal Distance(const Vec2 &v1, const Vec2 &v2)
Determines the Distance between two vectors.
Definition attitude-utils.cpp:513
constexpr decimal RadToDeg(decimal rad)
Converts an angle in radians to degrees.
Definition attitude-utils.hpp:318
int64_t SerializeLengthVec3()
Computes the size, in bytes, that a Vec3 object will take up.
Definition attitude-utils.cpp:818
Vec2 midpoint(const Vec2 &vec1, const Vec2 &vec2)
Finds the midpoint between two different vectors.
Definition attitude-utils.cpp:445
Mat3 QuaternionToDCM(const Quaternion &quat)
Creates a Direction Cosine Matrix (DCM) off of a Quaternion.
Definition attitude-utils.cpp:693
void SerializeVec3(const Vec3 &vec, unsigned char *buffer)
Serializes a Vec3 into a buffer.
Definition attitude-utils.cpp:835
Quaternion DCMToQuaternion(const Mat3 &dcm)
Creates a Quaternion based on a Direction Cosine Matrix (rotation matrix)
Definition attitude-utils.cpp:711
Quaternion SphericalToQuaternion(decimal ra, decimal dec, decimal roll)
Converts Euler Angles into a quaternion.
Definition attitude-utils.cpp:182
decimal Angle(const Vec3 &vec1, const Vec3 &vec2)
Determines the angle between two different vectors.
Definition attitude-utils.cpp:483
A Vec2 is an immutable object that represents a 2D Vector.
Definition attitude-utils.hpp:18
decimal y
The y coordinate.
Definition attitude-utils.hpp:22
Vec2 operator+(const Vec2 &) const
Vector Addition.
Definition attitude-utils.cpp:351
decimal x
The x coordinate.
Definition attitude-utils.hpp:20
Vec2 operator-(const Vec2 &) const
Vector Subtraction.
Definition attitude-utils.cpp:356
Vec2 Normalize() const
Normalizes this.
Definition attitude-utils.cpp:311
decimal operator*(const Vec2 &) const
Dot product (Scalar product)
Definition attitude-utils.cpp:336
decimal MagnitudeSq() const
Provides the square of the magnitude of this Vec2.
Definition attitude-utils.cpp:283
decimal Magnitude() const
Provides the magnitude of this Vec2.
Definition attitude-utils.cpp:301