A game library and wrapper around SFML
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

92 lines
1.7 KiB

#ifndef MATH_CPP
#define MATH_CPP
#include <cmath>
#include "math.hpp"
float distanceTo(float aX, float aY, float bX, float bY)
{
//ax-bx sq + ay-by sq
float x=aX-bX;
float y=aY-bY;
return sqrtf(x*x + y*y);
}
float manhattanTo(float aX, float aY, float bX, float bY)
{
//ax-bx abs + ay-by abs
float x=aX-bX;
float y=aY-bY;
return fabs(x) + fabs(y);
}
float pointTowards(float aX, float aY, float bX, float bY)
{
return radToDeg(atan2f((bY-aY) , (bX-aX)));
}
float magnitude(float x, float y)
{
return distanceTo(0, 0, x, y);
}
void normalize(coordinate* toNormalize)
{
float length=magnitude(toNormalize->x, toNormalize->y);
if (length > 0)
{
toNormalize->x/=length;
toNormalize->y/=length;
}
}
coordinate getVectorNormal(float x, float y, bool right)
{
coordinate returnCoord;
if (!right)
{
returnCoord.x=-y;
returnCoord.y=x;
}
else
{
returnCoord.x=y;
returnCoord.y=-x;
}
return returnCoord;
}
coordinate getVectorNormal(coordinate* vectorIn, bool right)
{
coordinate returnCoord;
if (!right)
{
returnCoord.x=-vectorIn->y;
returnCoord.y=vectorIn->x;
}
else
{
returnCoord.x=vectorIn->y;
returnCoord.y=-vectorIn->x;
}
return returnCoord;
}
float radToDeg(float radian)
{
//180/pi
return radian*57.295779513;
}
float degToRad(float degree)
{
//pi/180
return degree*0.017453278;
}
coordinate degToVec(float degree)
{
coordinate result;
float radian=degToRad(degree);
result.x=cosf(radian);
result.y=sinf(radian);
return result;
}
bool isVisible(int x, int y, int wX, int wY, int windowW, int windowH)
{
if (x + wX < 0 || y + wY < 0) return false;
if (x > windowW || y > windowH) return false;
return true;
}
#endif