From 7960e832debea82d0428fef2c5b58cca04b3c803 Mon Sep 17 00:00:00 2001 From: Thompson Lee Date: Sun, 11 Sep 2016 17:40:10 -0400 Subject: [PATCH] Added Mtx_Diagonal(). (#27) --- include/c3d/maths.h | 32 ++++++++++++++++++++++++++------ source/maths/mtx_identity.c | 10 ---------- 2 files changed, 26 insertions(+), 16 deletions(-) delete mode 100644 source/maths/mtx_identity.c diff --git a/include/c3d/maths.h b/include/c3d/maths.h index 215a4ce..123064d 100644 --- a/include/c3d/maths.h +++ b/include/c3d/maths.h @@ -283,12 +283,6 @@ static inline void Mtx_Copy(C3D_Mtx* out, const C3D_Mtx* in) *out = *in; } -/** - * @brief Identity matrix - * @param[out] out Matrix to fill - */ -void Mtx_Identity(C3D_Mtx* out); - /** * @brief Multiply two matrices * @param[out] out Output matrix @@ -495,6 +489,32 @@ void Mtx_LookAt(C3D_Mtx* out, C3D_FVec cameraPosition, C3D_FVec cameraTarget, C3 *@param[in,out] out Output matrix. */ void Mtx_Transpose(C3D_Mtx* out); + +/** + * @brief Creates a matrix with the diagonal using the given parameters. + * @param[out] out Output matrix. + * @param[in] x The X component. + * @param[in] y The Y component. + * @param[in] z The Z component. + * @param[in] w The W component. + */ +static inline void Mtx_Diagonal(C3D_Mtx* out, float x, float y, float z, float w) +{ + Mtx_Zeros(out); + out->r[0].x = x; + out->r[1].y = y; + out->r[2].z = z; + out->r[3].w = w; +} + +/** + * @brief Identity matrix + * @param[out] out Matrix to fill + */ +static inline void Mtx_Identity(C3D_Mtx* out) +{ + Mtx_Diagonal(out, 1.0f, 1.0f, 1.0f, 1.0f); +} ///@} ///@name Quaternion Math diff --git a/source/maths/mtx_identity.c b/source/maths/mtx_identity.c deleted file mode 100644 index 2ce7461..0000000 --- a/source/maths/mtx_identity.c +++ /dev/null @@ -1,10 +0,0 @@ -#include - -void Mtx_Identity(C3D_Mtx* out) -{ - // http://www.wolframalpha.com/input/?i={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}} - int i; - for (i = 0; i < 16; ++i) - out->m[i] = 0.0f; - out->r[0].x = out->r[1].y = out->r[2].z = out->r[3].w = 1.0f; -}