Files
handmadehero/handmade_math.h
T

82 lines
1.1 KiB
C

#ifndef HANDMADE_MATH_H
#define HANDMADE_MATH_H
/* TODO: Make these static. */
struct v2 {
float X, Y;
float E[2];
};
struct v2 V2(float X, float Y)
{
struct v2 Result;
Result.X = X;
Result.Y = Y;
return Result;
}
struct v2 V2Multiply(float A, struct v2 B)
{
struct v2 Result;
Result.X = A * B.X;
Result.Y = A * B.Y;
return Result;
}
struct v2 V2Unary(struct v2 A)
{
struct v2 Result;
Result.X = -A.X;
Result.Y = -A.Y;
return Result;
}
struct v2 V2Add(struct v2 A, struct v2 B)
{
struct v2 Result;
Result.X = A.X + B.X;
Result.Y = A.Y + B.Y;
return Result;
}
struct v2 V2Subtract(struct v2 A, struct v2 B)
{
struct v2 Result;
Result.X = A.X - B.X;
Result.Y = A.Y - B.Y;
return Result;
}
float Square(float A)
{
float Result;
Result = A * A;
return Result;
}
float InnerProduct(struct v2 A, struct v2 B)
{
float Result = A.X*B.X + A.Y*B.Y;
return Result;
}
float LengthSq(struct v2 A)
{
float Result = InnerProduct(A, A);
return Result;
}
#endif