2013-05-18 17:44:15 +02:00
|
|
|
/*****************************************************************************
|
|
|
|
* Quaternion.h *
|
|
|
|
* *
|
2013-07-12 21:30:13 +02:00
|
|
|
* XFX::Quaternion definition file *
|
2013-05-18 17:44:15 +02:00
|
|
|
* Copyright (c) XFX Team. All Rights Reserved *
|
|
|
|
*****************************************************************************/
|
2013-05-05 18:18:41 +02:00
|
|
|
#ifndef _XFX_QUATERNION_
|
|
|
|
#define _XFX_QUATERNION_
|
|
|
|
|
|
|
|
#include <System/Types.h>
|
|
|
|
|
|
|
|
namespace XFX
|
|
|
|
{
|
|
|
|
struct Matrix;
|
|
|
|
struct Vector3;
|
|
|
|
|
|
|
|
struct Quaternion : IEquatable<Quaternion>, Object
|
|
|
|
{
|
|
|
|
float W, X, Y, Z;
|
|
|
|
static const Quaternion Identity;
|
|
|
|
|
|
|
|
Quaternion(float x, float y, float z, float w);
|
|
|
|
Quaternion(Vector3 vectorPart, float scalarPart);
|
|
|
|
Quaternion(const Quaternion &obj);
|
|
|
|
Quaternion();
|
|
|
|
|
|
|
|
static Quaternion Add(Quaternion quaternion1, Quaternion quaternion2);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Add(Quaternion quaternion1, Quaternion quaternion2, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion Concatenate(Quaternion quaternion1, Quaternion quaternion2);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Concatenate(Quaternion quaternion1, Quaternion quaternion2, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
void Conjugate();
|
|
|
|
static Quaternion Conjugate(Quaternion value);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Conjugate(Quaternion value, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion CreateFromAxisAngle(Vector3 axis, float angle);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void CreateFromAxisAngle(Vector3 axis, float angle, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion CreateFromRotationMatrix(Matrix matrix);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void CreateFromRotationMatrix(Matrix matrix, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion Divide(Quaternion quaternion1, Quaternion quaternion2);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Divide(Quaternion quaternion1, Quaternion quaternion2, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static float Dot(Quaternion quaternion1, Quaternion quaternion2);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Dot(Quaternion quaternion1, Quaternion quaternion2, out float& result);
|
|
|
|
bool Equals(Object const * const obj) const;
|
2013-05-05 18:18:41 +02:00
|
|
|
bool Equals(const Quaternion obj) const;
|
|
|
|
int GetHashCode() const;
|
2013-07-12 21:30:13 +02:00
|
|
|
static const Type& GetType();
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion Inverse(Quaternion quaternion);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Inverse(Quaternion quaternion, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
float Length();
|
|
|
|
float LengthSquared();
|
|
|
|
static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion Multiply(Quaternion quaternion1, Quaternion quaternion2);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Multiply(Quaternion quaternion1, Quaternion quaternion2, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion Multiply(Quaternion quaternion, float scaleFactor);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Multiply(Quaternion quaternion, float scaleFactor, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion Negate(Quaternion quaternion);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Negate(Quaternion quaternion, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
void Normalize();
|
|
|
|
static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
static Quaternion Subtract(Quaternion quaternion1, Quaternion quaternion2);
|
2013-05-18 17:44:15 +02:00
|
|
|
static void Subtract(Quaternion quaternion1, Quaternion quaternion2, out Quaternion& result);
|
2013-05-05 18:18:41 +02:00
|
|
|
char* ToString();
|
|
|
|
|
2013-05-18 17:44:15 +02:00
|
|
|
Quaternion operator+(const Quaternion& other);
|
|
|
|
Quaternion operator/(const Quaternion& other);
|
2013-05-05 18:18:41 +02:00
|
|
|
bool operator==(const Quaternion& other) const;
|
|
|
|
bool operator!=(const Quaternion& other) const;
|
2013-05-18 17:44:15 +02:00
|
|
|
Quaternion operator*(const Quaternion& other);
|
|
|
|
Quaternion operator*(const float scaleFactor);
|
|
|
|
Quaternion operator-(const Quaternion& other);
|
|
|
|
Quaternion operator-();
|
2013-05-05 18:18:41 +02:00
|
|
|
} ALIGNED16;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif //_XFX_QUATERNION_
|