82 lines
1.1 KiB
C
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
|