mirror of
https://github.com/HandmadeMath/HandmadeMath.git
synced 2025-10-18 06:31:48 +00:00
Merge pull request #6 from Valmar33/master
Added HMM_MultiplyMat4ByVec4 function
This commit is contained in:
@@ -257,6 +257,7 @@ HMMDEF hmm_vec4 HMM_DivideVec4(hmm_vec4 Left, hmm_vec4 Right);
|
|||||||
HMMDEF hmm_mat4 HMM_Mat4(void);
|
HMMDEF hmm_mat4 HMM_Mat4(void);
|
||||||
HMMDEF hmm_mat4 HMM_Mat4d(float Diagonal);
|
HMMDEF hmm_mat4 HMM_Mat4d(float Diagonal);
|
||||||
HMMDEF hmm_mat4 HMM_MultiplyMat4(hmm_mat4 Left, hmm_mat4 Right);
|
HMMDEF hmm_mat4 HMM_MultiplyMat4(hmm_mat4 Left, hmm_mat4 Right);
|
||||||
|
HMMDEF hmm_vec4 HMM_MultiplyMat4ByVec4(hmm_mat4 Matrix, hmm_vec4 Vector);
|
||||||
|
|
||||||
HMMDEF hmm_mat4 HMM_Orthographic(float Left, float Right, float Bottom, float Top, float Near, float Far);
|
HMMDEF hmm_mat4 HMM_Orthographic(float Left, float Right, float Bottom, float Top, float Near, float Far);
|
||||||
HMMDEF hmm_mat4 HMM_Perspective(float FOV, float AspectRatio, float Near, float Far);
|
HMMDEF hmm_mat4 HMM_Perspective(float FOV, float AspectRatio, float Near, float Far);
|
||||||
@@ -284,6 +285,7 @@ HMMDEF hmm_vec2 HMM_Multiply(int X, int Y);
|
|||||||
HMMDEF hmm_vec3 HMM_Multiply(int X, int Y, int Z);
|
HMMDEF hmm_vec3 HMM_Multiply(int X, int Y, int Z);
|
||||||
HMMDEF hmm_vec4 HMM_Multiply(int X, int Y, int Z, int W);
|
HMMDEF hmm_vec4 HMM_Multiply(int X, int Y, int Z, int W);
|
||||||
HMMDEF hmm_mat4 HMM_Multiply(hmm_mat4 Left, hmm_mat4 Right);
|
HMMDEF hmm_mat4 HMM_Multiply(hmm_mat4 Left, hmm_mat4 Right);
|
||||||
|
HMMDEF hmm_vec4 HMM_Multiply(hmm_mat4 Matrix, hmm_vec4 Vector);
|
||||||
|
|
||||||
HMMDEF hmm_vec2 HMM_Divide(int X, int Y);
|
HMMDEF hmm_vec2 HMM_Divide(int X, int Y);
|
||||||
HMMDEF hmm_vec3 HMM_Divide(int X, int Y, int Z);
|
HMMDEF hmm_vec3 HMM_Divide(int X, int Y, int Z);
|
||||||
@@ -305,6 +307,8 @@ HMMDEF hmm_mat4 operator*(hmm_mat4 Left, hmm_mat4 Right);
|
|||||||
HMMDEF hmm_vec3 operator*(hmm_vec3 Left, float Right);
|
HMMDEF hmm_vec3 operator*(hmm_vec3 Left, float Right);
|
||||||
HMMDEF hmm_vec2 operator*(hmm_vec2 Left, float Right);
|
HMMDEF hmm_vec2 operator*(hmm_vec2 Left, float Right);
|
||||||
|
|
||||||
|
HMMDEF hmm_vec4 operator*(hmm_mat4 Matrix, hmm_vec4 Vector);
|
||||||
|
|
||||||
HMMDEF hmm_vec2 operator/(hmm_vec2 Left, hmm_vec2 Right);
|
HMMDEF hmm_vec2 operator/(hmm_vec2 Left, hmm_vec2 Right);
|
||||||
HMMDEF hmm_vec3 operator/(hmm_vec3 Left, hmm_vec3 Right);
|
HMMDEF hmm_vec3 operator/(hmm_vec3 Left, hmm_vec3 Right);
|
||||||
HMMDEF hmm_vec4 operator/(hmm_vec4 Left, hmm_vec4 Right);
|
HMMDEF hmm_vec4 operator/(hmm_vec4 Left, hmm_vec4 Right);
|
||||||
@@ -708,6 +712,26 @@ HMM_MultiplyMat4(hmm_mat4 Left, hmm_mat4 Right)
|
|||||||
return (Result);
|
return (Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hmm_vec4
|
||||||
|
HMM_MultiplyMat4ByVec4(hmm_mat4 Matrix, hmm_vec4 Vector)
|
||||||
|
{
|
||||||
|
hmm_vec4 Result = HMM_Vec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
|
||||||
|
int Rows, Columns;
|
||||||
|
for(Rows = 0; Rows < 4; ++Rows)
|
||||||
|
{
|
||||||
|
float Sum = 0;
|
||||||
|
for(Columns = 0; Columns < 4; ++Columns)
|
||||||
|
{
|
||||||
|
Sum += Matrix.Elements[Rows][Columns] * Vector.Elements[Columns];
|
||||||
|
}
|
||||||
|
|
||||||
|
Result.Elements[Rows] = Sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Result);
|
||||||
|
}
|
||||||
|
|
||||||
hmm_mat4
|
hmm_mat4
|
||||||
HMM_Orthographic(float Left, float Right, float Bottom, float Top, float Near, float Far)
|
HMM_Orthographic(float Left, float Right, float Bottom, float Top, float Near, float Far)
|
||||||
{
|
{
|
||||||
@@ -896,6 +920,14 @@ Multiply(hmm_mat4 Left, hmm_mat4 Right)
|
|||||||
return (Result);
|
return (Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HINLINE hmm_vec4
|
||||||
|
Multiply(hmm_mat4 Matrix, hmm_vec4 Vector)
|
||||||
|
{
|
||||||
|
hmm_vec4 Result = HMM_MultiplyMat4ByVec4(Matrix, Vector);
|
||||||
|
|
||||||
|
return (Result);
|
||||||
|
}
|
||||||
|
|
||||||
HINLINE hmm_vec2
|
HINLINE hmm_vec2
|
||||||
Divide(hmm_vec2 Left, hmm_vec2 Right)
|
Divide(hmm_vec2 Left, hmm_vec2 Right)
|
||||||
{
|
{
|
||||||
@@ -1023,6 +1055,14 @@ operator*(hmm_mat4 Left, hmm_mat4 Right)
|
|||||||
return (Result);
|
return (Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HINLINE hmm_vec4
|
||||||
|
operator*(hmm_mat4 Matrix, hmm_vec4 Vector)
|
||||||
|
{
|
||||||
|
hmm_vec4 Result = Multiply(Matrix, Vector);
|
||||||
|
|
||||||
|
return (Result);
|
||||||
|
}
|
||||||
|
|
||||||
HINLINE hmm_vec2
|
HINLINE hmm_vec2
|
||||||
operator/(hmm_vec2 Left, hmm_vec2 Right)
|
operator/(hmm_vec2 Left, hmm_vec2 Right)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user