75 lines
826 B
C
75 lines
826 B
C
#ifndef HANDMADE_MATH_H
|
|
#define HANDMADE_MATH_H
|
|
|
|
typedef struct v2 {
|
|
F32 X, Y;
|
|
F32 E[2];
|
|
} v2;
|
|
|
|
v2 V2(F32 X, F32 Y)
|
|
{
|
|
v2 Result;
|
|
|
|
Result.X = X;
|
|
Result.Y = Y;
|
|
|
|
return Result;
|
|
}
|
|
|
|
v2 V2Multiply(F32 A, v2 B)
|
|
{
|
|
v2 Result;
|
|
|
|
Result.X = A * B.X;
|
|
Result.Y = A * B.Y;
|
|
|
|
return Result;
|
|
}
|
|
|
|
v2 V2Unary(v2 A)
|
|
{
|
|
v2 Result;
|
|
|
|
Result.X = -A.X;
|
|
Result.Y = -A.Y;
|
|
|
|
return Result;
|
|
}
|
|
|
|
v2 V2Add(v2 A, v2 B)
|
|
{
|
|
v2 Result;
|
|
|
|
Result.X = A.X + B.X;
|
|
Result.Y = A.Y + B.Y;
|
|
|
|
return Result;
|
|
}
|
|
|
|
v2 V2Subtract(v2 A, v2 B)
|
|
{
|
|
v2 Result;
|
|
|
|
Result.X = A.X - B.X;
|
|
Result.Y = A.Y - B.Y;
|
|
|
|
return Result;
|
|
}
|
|
|
|
F32 Square(F32 A)
|
|
{
|
|
F32 Result;
|
|
|
|
Result = A * A;
|
|
|
|
return Result;
|
|
}
|
|
|
|
F32 InnerProduct(v2 A, v2 B)
|
|
{
|
|
F32 Result = A.X*B.X + A.Y*B.Y;
|
|
return Result;
|
|
}
|
|
|
|
#endif
|