mirror of
https://github.com/HandmadeMath/HandmadeMath.git
synced 2025-12-28 23:54:32 +00:00
Working on quaternions
This commit is contained in:
@@ -373,6 +373,8 @@ typedef struct hmm_quaternion
|
||||
float Elements[4];
|
||||
} hmm_quaternion;
|
||||
|
||||
|
||||
|
||||
typedef union hmm_mat4
|
||||
{
|
||||
float Elements[4][4];
|
||||
@@ -468,6 +470,11 @@ HMMDEF hmm_mat4 HMM_LookAt(hmm_vec3 Eye, hmm_vec3 Center, hmm_vec3 Up);
|
||||
|
||||
HMMDEF hmm_quaternion HMM_Quaternion(float X, float Y, float Z, float W);
|
||||
HMMDEF hmm_quaternion HMM_QuaternionV4(hmm_vec4 Vector);
|
||||
HMMDEF hmm_quaternion HMM_AddQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo);
|
||||
HMMDEF hmm_quaternion HMM_SubQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo);
|
||||
HMMDEF hmm_quaternion HMM_MulQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo);
|
||||
HMMDef hmm_quaternion HMM_DivQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo);
|
||||
//TODO(Trent): Don't forget the line numbers!
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
@@ -1465,6 +1472,50 @@ HMM_QuaternionV4(hmm_vec4 Vector)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HINLINE hmm_quaternion
|
||||
HMM_AddQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo)
|
||||
{
|
||||
hmm_quaternion Result = {0};
|
||||
|
||||
Result.X = QuaternionOne.X + QuaternionTwo.X;
|
||||
Result.Y = QuaternionOne.Y + QuaternionTwo.Y;
|
||||
Result.Z = QuaternionOne.Z + QuaternionTwo.Z;
|
||||
Result.W = QuaternionOne.W + QuaternionTwo.W;
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HINLINE hmm_quaternion
|
||||
HMM_SubQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo)
|
||||
{
|
||||
hmm_quaternion Result = {0};
|
||||
|
||||
Result.X = QuaternionOne.X - QuaternionTwo.X;
|
||||
Result.Y = QuaternionOne.Y - QuaternionTwo.Y;
|
||||
Result.Z = QuaternionOne.Z - QuaternionTwo.Z;
|
||||
Result.W = QuaternionOne.W - QuaternionTwo.W;
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HINLINE hmm_quaternion
|
||||
HMM_MulQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo)
|
||||
{
|
||||
hmm_quaternion Result = {0};
|
||||
|
||||
Result.X = QuaternionOne.X * QuaternionTwo.X;
|
||||
Result.Y = QuaternionOne.Y * QuaternionTwo.Y;
|
||||
Result.Z = QuaternionOne.Z * QuaternionTwo.Z;
|
||||
Result.W = QuaternionOne.W * QuaternionTwo.W;
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HINLINE hmm_quaternion
|
||||
HMM_DivQuat(hmm_quaternion QuaternionOne, hmm_quaternion QuaternionTwo)
|
||||
{
|
||||
hmm_quaternion Result = {0};
|
||||
|
||||
#ifdef HANDMADE_MATH_CPP_MODE
|
||||
|
||||
HMMDEF float
|
||||
@@ -2187,4 +2238,4 @@ operator*=(hmm_mat4 &Left, float Right)
|
||||
|
||||
#endif /* HANDMADE_MATH_CPP_MODE */
|
||||
|
||||
#endif /* HANDMADE_MATH_IMPLEMENTATION */
|
||||
#endif /* HANDMADE_MATH_IMPLEMENTATION */
|
||||
|
||||
Reference in New Issue
Block a user