mirror of
https://github.com/HandmadeMath/HandmadeMath.git
synced 2025-09-07 10:48:17 +00:00
Added normalize
This commit is contained in:
@@ -266,11 +266,13 @@ HMMDEF vec2 operator*(vec2 Left, vec2 Right);
|
||||
HMMDEF vec3 operator*(vec3 Left, vec3 Right);
|
||||
HMMDEF vec4 operator*(vec4 Left, vec4 Right);
|
||||
HMMDEF mat4 operator*(mat4 Left, mat4 Right);
|
||||
HMMDEF vec3 operator*(vec3 Left, float Right);
|
||||
|
||||
HMMDEF vec2 operator/(vec2 Left, vec2 Right);
|
||||
HMMDEF vec3 operator/(vec3 Left, vec3 Right);
|
||||
HMMDEF vec4 operator/(vec4 Left, vec4 Right);
|
||||
|
||||
|
||||
#endif /* HANDMADE_MATH_CPP */
|
||||
|
||||
#endif /* HANDMADE_MATH_H */
|
||||
@@ -285,6 +287,37 @@ ToRadians(float Degrees)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF HINLINE float
|
||||
Inner(vec3 A, vec3 B)
|
||||
{
|
||||
float Result = A.X*B.X + A.Y*B.Y + A.Z*B.Z;
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF HINLINE float
|
||||
SquareRoot(float Float)
|
||||
{
|
||||
float Result = sqrtf(Float);
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF HINLINE float
|
||||
LengthSq(vec3 A)
|
||||
{
|
||||
float Result = Inner(A, A);
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF HINLINE float
|
||||
Length(vec3 A)
|
||||
{
|
||||
float Result = SquareRoot(LengthSq(A));
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF HINLINE float
|
||||
Power(float Base, int Exponent)
|
||||
{
|
||||
@@ -330,7 +363,15 @@ Clamp(float Min, float Value, float Max)
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
|
||||
HMMDEF HINLINE vec3
|
||||
Normalize(vec3 A)
|
||||
{
|
||||
vec3 Result = A * (1.0f / Length(A));
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF HINLINE vec2
|
||||
V2(float X, float Y)
|
||||
{
|
||||
@@ -342,7 +383,6 @@ V2(float X, float Y)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
|
||||
HMMDEF HINLINE vec2
|
||||
V2i(int X, int Y)
|
||||
{
|
||||
@@ -792,7 +832,7 @@ Divide(vec4 Left, vec4 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec2
|
||||
HMMDEF HINLINE vec2
|
||||
operator+(vec2 Left, vec2 Right)
|
||||
{
|
||||
vec2 Result = Add(Left, Right);
|
||||
@@ -800,7 +840,7 @@ operator+(vec2 Left, vec2 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec3
|
||||
HMMDEF HINLINE vec3
|
||||
operator+(vec3 Left, vec3 Right)
|
||||
{
|
||||
vec3 Result = Add(Left, Right);
|
||||
@@ -808,7 +848,7 @@ operator+(vec3 Left, vec3 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec4
|
||||
HMMDEF HINLINE vec4
|
||||
operator+(vec4 Left, vec4 Right)
|
||||
{
|
||||
vec4 Result = Add(Left, Right);
|
||||
@@ -816,7 +856,7 @@ operator+(vec4 Left, vec4 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec2
|
||||
HMMDEF HINLINE vec2
|
||||
operator-(vec2 Left, vec2 Right)
|
||||
{
|
||||
vec2 Result = Subtract(Left, Right);
|
||||
@@ -824,7 +864,7 @@ operator-(vec2 Left, vec2 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec3
|
||||
HMMDEF HINLINE vec3
|
||||
operator-(vec3 Left, vec3 Right)
|
||||
{
|
||||
vec3 Result = Subtract(Left, Right);
|
||||
@@ -832,7 +872,7 @@ operator-(vec3 Left, vec3 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec4
|
||||
HMMDEF HINLINE vec4
|
||||
operator-(vec4 Left, vec4 Right)
|
||||
{
|
||||
vec4 Result = Subtract(Left, Right);
|
||||
@@ -840,7 +880,7 @@ operator-(vec4 Left, vec4 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec2
|
||||
HMMDEF HINLINE vec2
|
||||
operator*(vec2 Left, vec2 Right)
|
||||
{
|
||||
vec2 Result = Multiply(Left, Right);
|
||||
@@ -848,7 +888,7 @@ operator*(vec2 Left, vec2 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec3
|
||||
HMMDEF HINLINE vec3
|
||||
operator*(vec3 Left, vec3 Right)
|
||||
{
|
||||
vec3 Result = Multiply(Left, Right);
|
||||
@@ -856,7 +896,19 @@ operator*(vec3 Left, vec3 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec4
|
||||
HMMDEF HINLINE vec3
|
||||
operator*(vec3 Left, float Right)
|
||||
{
|
||||
vec3 Result;
|
||||
|
||||
Result.X = Right * Left.X;
|
||||
Result.Y = Right * Left.Y;
|
||||
Result.Z = Right * Left.Z;
|
||||
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF HINLINE vec4
|
||||
operator*(vec4 Left, vec4 Right)
|
||||
{
|
||||
vec4 Result = Multiply(Left, Right);
|
||||
@@ -864,7 +916,7 @@ operator*(vec4 Left, vec4 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF mat4
|
||||
HMMDEF HINLINE mat4
|
||||
operator*(mat4 Left, mat4 Right)
|
||||
{
|
||||
mat4 Result = Multiply(Left, Right);
|
||||
@@ -872,7 +924,7 @@ operator*(mat4 Left, mat4 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec2
|
||||
HMMDEF HINLINE vec2
|
||||
operator/(vec2 Left, vec2 Right)
|
||||
{
|
||||
vec2 Result = Divide(Left, Right);
|
||||
@@ -880,7 +932,7 @@ operator/(vec2 Left, vec2 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec3
|
||||
HMMDEF HINLINE vec3
|
||||
operator/(vec3 Left, vec3 Right)
|
||||
{
|
||||
vec3 Result = Divide(Left, Right);
|
||||
@@ -888,7 +940,7 @@ operator/(vec3 Left, vec3 Right)
|
||||
return(Result);
|
||||
}
|
||||
|
||||
HMMDEF vec4
|
||||
HMMDEF HINLINE vec4
|
||||
operator/(vec4 Left, vec4 Right)
|
||||
{
|
||||
vec4 Result = Divide(Left, Right);
|
||||
|
Reference in New Issue
Block a user