#ifndef DELTA_MATH #define DELTA_MATH #include #include class DeltaVector2 { public: float x, y; DeltaVector2(float xval, float yval); DeltaVector2(); DeltaVector2 operator+(const DeltaVector2& other) const; DeltaVector2 operator-(const DeltaVector2& other) const; DeltaVector2 operator*(float a) const; DeltaVector2& operator+=(const DeltaVector2& other); DeltaVector2& operator-=(const DeltaVector2& other); float distanceToVector(const DeltaVector2& vec) const; float distanceToPos(float x, float y) const; float dotProduct(const DeltaVector2& vec) const; float angleTo(const DeltaVector2& vec) const; float length() const; }; class DeltaVector3 { public: float x, y, z; DeltaVector3(float xval, float yval, float zval); DeltaVector3(); DeltaVector3 operator+(const DeltaVector3& other) const; DeltaVector3 operator-(const DeltaVector3& other) const; DeltaVector3 operator*(float a) const; DeltaVector3& operator+=(const DeltaVector3& other); DeltaVector3& operator-=(const DeltaVector3& other); float distanceToVector(const DeltaVector3 &vec) const; float distanceToPos(float x, float y) const; float dotProduct(const DeltaVector3 &vec) const; float angleTo(const DeltaVector3 &vec) const; float length() const; DeltaVector3 crossProduct(const DeltaVector3 &vec) const; }; struct DeltaTriangle { DeltaVector3 a, b, c; }; struct DeltaTriangle2D { DeltaVector2 a, b, c; }; struct DeltaVertex { DeltaVector3 pos; DeltaVector2 uv; }; struct DeltaModelConnector { int ind1, ind2; }; struct DeltaRenderTriangle { DeltaVertex a, b, c; std::string texID; DeltaVector3 normal; }; struct DeltaModel { std::vector vertexes; std::vector lines; std::vector triangles; }; float getDeterminant(const DeltaVector2 &pointA, const DeltaVector2 &pointB, const DeltaVector2 &candidate); DeltaVector2 barycentricToScreen(const DeltaVector3 &baryPoint, const DeltaVector2 &a, const DeltaVector2 &b, const DeltaVector2 &c); DeltaVertex intersect(DeltaVertex a, DeltaVertex b, float nearZ); int clipTriangleAgainstNearPlane(float nearY, const DeltaRenderTriangle &in, DeltaRenderTriangle &out1, DeltaRenderTriangle &out2); std::vector triangulatePolygon(std::vector& points); uint32_t SDLColorToUint32(SDL_Color color); #endif