PrimeWorldEditor/Common/Math.h

46 lines
1.2 KiB
C++

#ifndef MATH
#define MATH
#include "CAABox.h"
#include "CRay.h"
#include "CPlane.h"
#include "CVector3f.h"
#include "SRayIntersection.h"
#include <utility>
namespace Math
{
float Abs(float v);
float Pow(float Base, float Exponent);
float Distance(const CVector3f& A, const CVector3f& B);
float DegreesToRadians(float deg);
float RadiansToDegrees(float rad);
std::pair<bool,float> RayPlaneIntersecton(const CRay& ray, const CPlane& plane);
std::pair<bool,float> RayBoxIntersection(const CRay& Ray, const CAABox& Box);
std::pair<bool,float> RayLineIntersection(const CRay& ray, const CVector3f& pointA,
const CVector3f& pointB, float threshold = 0.02f);
std::pair<bool,float> RayTriangleIntersection(const CRay& Ray, const CVector3f& PointA,
const CVector3f& PointB, const CVector3f& PointC,
bool AllowBackfaces = false);
CMatrix4f PerspectiveMatrix(float fov, float aspect, float near, float far);
CMatrix4f OrthographicMatrix(float left, float right, float bottom, float top, float near, float far);
// Constants
static const float skPi = 3.14159265358979323846f;
static const float skHalfPi = skPi / 2.f;
}
#endif // MATH