Cleaning up maths: part 3.

Demangled methods, vectors args by ref, added comments, more accurate ray_intersect_line.
This commit is contained in:
Muzychenko Andrey committed 2022-05-13 11:15:30 +03:00
1 parent 2d0da712e3
commit fdf1f6c9f1
21 files changed
+296 -356

No files matched your search

+29 -20
View File
@@ -6,6 +6,15 @@ struct vector2
{
float X;
float Y;
bool operator==(const vector2& vec)
{
return X == vec.X && Y == vec.Y;
}
bool operator!=(const vector2& vec)
{
return X != vec.X || Y != vec.Y;
}
};
struct vector3 :vector2
@@ -40,11 +49,11 @@ struct ray_type
struct line_type
{
vector2 PerpendicularL;
vector2 PerpendicularC;
vector2 Direction;
float PreComp1;
float OriginX;
float OriginY;
vector2 Origin;
float MinCoord;
float MaxCoord;
vector2 RayIntersect;
};
@@ -71,27 +80,27 @@ struct ramp_plane_type
class maths
{
public:
static void enclosing_box(rectangle_type* rect1, rectangle_type* rect2, rectangle_type* dstRect);
static int rectangle_clip(rectangle_type* rect1, rectangle_type* rect2, rectangle_type* dstRect);
static int overlapping_box(rectangle_type* rect1, rectangle_type* rect2, rectangle_type* dstRect);
static float ray_intersect_circle(ray_type* ray, circle_type* circle);
static float normalize_2d(vector2* vec);
static void enclosing_box(const rectangle_type& rect1, const rectangle_type& rect2, rectangle_type& dstRect);
static bool rectangle_clip(const rectangle_type& rect1, const rectangle_type& rect2, rectangle_type* dstRect);
static float ray_intersect_circle(const ray_type& ray, const circle_type& circle);
static float normalize_2d(vector2& vec);
static void line_init(line_type* line, float x0, float y0, float x1, float y1);
static float ray_intersect_line(ray_type* ray, line_type* line);
static void cross(vector3* vec1, vector3* vec2, vector3* dstVec);
static float magnitude(vector3* vec);
static void vector_add(vector2* vec1Dst, vector2* vec2);
static void cross(const vector3& vec1, const vector3& vec2, vector3& dstVec);
static float cross(const vector2& vec1, const vector2& vec2);
static float magnitude(const vector3& vec);
static void vector_add(vector2& vec1Dst, const vector2& vec2);
static vector2 vector_sub(const vector2& vec1, const vector2& vec2);
static float basic_collision(TBall* ball, vector2* nextPosition, vector2* direction, float elasticity,
float smoothness,
float threshold, float boost);
static float Distance_Squared(vector2& vec1, vector2& vec2);
static float DotProduct(vector2* vec1, vector2* vec2);
static void vswap(vector2* vec1, vector2* vec2);
static float Distance(vector2* vec1, vector2* vec2);
static float Distance_Squared(const vector2& vec1, const vector2& vec2);
static float DotProduct(const vector2& vec1, const vector2& vec2);
static float Distance(const vector2& vec1, const vector2& vec2);
static void SinCos(float angle, float* sinOut, float* cosOut);
static void RotatePt(vector2* point, float sin, float cos, vector2* origin);
static void RotatePt(vector2& point, float sin, float cos, const vector2& origin);
static float distance_to_flipper(ray_type* ray1, ray_type* ray2);
static void RotateVector(vector2* vec, float angle);
static void find_closest_edge(ramp_plane_type* plane, int planeCount, wall_point_type* wall, vector2** lineEnd,
vector2** lineStart);
static void RotateVector(vector2& vec, float angle);
static void find_closest_edge(ramp_plane_type* plane, int planeCount, wall_point_type* wall, vector2& lineEnd,
vector2& lineStart);
};