1
0
Fork 0
mirror of https://git.coom.tech/drummyfish/raycastlib.git synced 2024-11-24 20:59:58 +01:00

Add vectorCos function

This commit is contained in:
Miloslav Číž 2018-08-30 18:31:08 +02:00
parent 01517bd1df
commit b774d8fdd1

View file

@ -92,6 +92,13 @@ void castRayMultiHit(Ray ray, int16_t (*arrayFunc)(int16_t x, int16_t y),
Vector2D angleToDirection(Unit angle); Vector2D angleToDirection(Unit angle);
Unit cosInt(Unit input); Unit cosInt(Unit input);
Unit sinInt(Unit input); Unit sinInt(Unit input);
/// Normalizes given vector to have UNITS_PER_SQUARE length.
Vector2D normalize(Vector2D v);
/// Computes a cos of an angle between two vectors.
Unit vectorsAngleCos(Vector2D v1, Vector2D v2);
uint16_t sqrtInt(uint32_t value); uint16_t sqrtInt(uint32_t value);
Unit dist(Vector2D p1, Vector2D p2); Unit dist(Vector2D p1, Vector2D p2);
Unit len(Vector2D v); Unit len(Vector2D v);
@ -395,6 +402,26 @@ void castRaysMultiHit(
} }
} }
Vector2D normalize(Vector2D v)
{
Vector2D result;
Unit l = len(v);
result.x = (v.x * UNITS_PER_SQUARE) / l;
result.y = (v.y * UNITS_PER_SQUARE) / l;
return result;
}
Unit vectorsAngleCos(Vector2D v1, Vector2D v2)
{
v1 = normalize(v1);
v2 = normalize(v2);
return (v1.x * v2.x + v1.y * v2.y) / UNITS_PER_SQUARE;
}
Unit degreesToUnitsAngle(int16_t degrees) Unit degreesToUnitsAngle(int16_t degrees)
{ {
return (degrees * UNITS_PER_SQUARE) / 360; return (degrees * UNITS_PER_SQUARE) / 360;