diff options
Diffstat (limited to 'src/libjin/Math')
-rw-r--r-- | src/libjin/Math/README.md | 1 | ||||
-rw-r--r-- | src/libjin/Math/je_bezier_curve.cpp | 0 | ||||
-rw-r--r-- | src/libjin/Math/je_bezier_curve.h | 17 | ||||
-rw-r--r-- | src/libjin/Math/je_constant.h | 10 | ||||
-rw-r--r-- | src/libjin/Math/je_ellipse.cpp | 0 | ||||
-rw-r--r-- | src/libjin/Math/je_ellipse.h | 0 | ||||
-rw-r--r-- | src/libjin/Math/je_math.h | 83 | ||||
-rw-r--r-- | src/libjin/Math/je_matrix.cpp | 194 | ||||
-rw-r--r-- | src/libjin/Math/je_matrix.h | 159 | ||||
-rw-r--r-- | src/libjin/Math/je_quad.h | 23 | ||||
-rw-r--r-- | src/libjin/Math/je_random.cpp | 52 | ||||
-rw-r--r-- | src/libjin/Math/je_random.h | 33 | ||||
-rw-r--r-- | src/libjin/Math/je_transform.cpp | 99 | ||||
-rw-r--r-- | src/libjin/Math/je_transform.h | 49 | ||||
-rw-r--r-- | src/libjin/Math/je_vector2.hpp | 63 | ||||
-rw-r--r-- | src/libjin/Math/je_vector3.hpp | 41 | ||||
-rw-r--r-- | src/libjin/Math/je_vector4.hpp | 45 |
17 files changed, 0 insertions, 869 deletions
diff --git a/src/libjin/Math/README.md b/src/libjin/Math/README.md deleted file mode 100644 index a096332..0000000 --- a/src/libjin/Math/README.md +++ /dev/null @@ -1 +0,0 @@ -ļռΪJinEngineڴģ乲õ
\ No newline at end of file diff --git a/src/libjin/Math/je_bezier_curve.cpp b/src/libjin/Math/je_bezier_curve.cpp deleted file mode 100644 index e69de29..0000000 --- a/src/libjin/Math/je_bezier_curve.cpp +++ /dev/null diff --git a/src/libjin/Math/je_bezier_curve.h b/src/libjin/Math/je_bezier_curve.h deleted file mode 100644 index 6925baf..0000000 --- a/src/libjin/Math/je_bezier_curve.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef __JIN_BEZIER_CURVE_H__ -#define __JIN_BEZIER_CURVE_H__ - -namespace JinEngine -{ - namespace Math - { - - class BezierCurve - { - - }; - - } // namespace Math -} // namespace JinEngine - -#endif
\ No newline at end of file diff --git a/src/libjin/Math/je_constant.h b/src/libjin/Math/je_constant.h deleted file mode 100644 index 45577e7..0000000 --- a/src/libjin/Math/je_constant.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __JE_MATH_CONSTANT_H__ -#define __JE_MATH_CONSTANT_H__ - -#define PI 3.1415926f - -// int16 Χ -#define INT16_RANGE_LEFT -32768 -#define INT16_RANGE_RIGHT 32767 - -#endif
\ No newline at end of file diff --git a/src/libjin/Math/je_ellipse.cpp b/src/libjin/Math/je_ellipse.cpp deleted file mode 100644 index e69de29..0000000 --- a/src/libjin/Math/je_ellipse.cpp +++ /dev/null diff --git a/src/libjin/Math/je_ellipse.h b/src/libjin/Math/je_ellipse.h deleted file mode 100644 index e69de29..0000000 --- a/src/libjin/Math/je_ellipse.h +++ /dev/null diff --git a/src/libjin/Math/je_math.h b/src/libjin/Math/je_math.h deleted file mode 100644 index de57e36..0000000 --- a/src/libjin/Math/je_math.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef __JE_UTILS_MATH_H__ -#define __JE_UTILS_MATH_H__ - -#include "je_constant.h" -#include "je_matrix.h" -#include "je_quad.h" - -namespace JinEngine -{ - namespace Math - { - - #ifdef min - #undef min - #endif // min - #ifdef max - #undef max - #endif // max - - template<typename T> - inline T min(T a, T b) - { - return a < b ? a : b; - } - - template<typename T> - inline T max(T a, T b) - { - return a > b ? a : b; - } - - template<typename T> - inline T clamp(T a, T mi, T ma) - { - return min<T>(max<T>(a, mi), ma); - } - - template<typename T> - inline bool within(T a, T mi, T ma) - { - return a >= mi && a <= ma; - } - - template<typename T> - inline bool without(T a, T mi, T ma) - { - return a < mi || a > ma; - } - - template<typename T> - inline T abs(T a) - { - return a > 0 ? a : -a; - } - - template<typename T> - inline T lowerBound(T a, T lower) - { - return a < lower ? lower : a; - } - - template<typename T> - inline T upperBound(T a, T upper) - { - return a > upper ? upper : a; - } - - template<typename T> - inline T lerp(T a, T b, float t) - { - return a + t * (b - a); - } - - inline float lerp(float a, float b, float f) - { - f = clamp<float>(f, 0, 1); - return a + f * (b - a); - } - - } // namespace Math -} // namespace JinEngine - -#endif // __JE_UTILS_MATH_H__ diff --git a/src/libjin/Math/je_matrix.cpp b/src/libjin/Math/je_matrix.cpp deleted file mode 100644 index bc1fcea..0000000 --- a/src/libjin/Math/je_matrix.cpp +++ /dev/null @@ -1,194 +0,0 @@ -#include "je_matrix.h" - -#include <cstring> // memcpy -#include <cmath> - -namespace JinEngine -{ - namespace Math - { - - const Matrix Matrix::Identity; - - // | e0 e4 e8 e12 | - // | e1 e5 e9 e13 | - // | e2 e6 e10 e14 | - // | e3 e7 e11 e15 | - - Matrix::Matrix() - { - setIdentity(); - } - - Matrix::~Matrix() - { - } - - void Matrix::setOrtho(float l, float r, float b, float t, float n, float f) - { - setIdentity(); - float w = r - l; - float h = t - b; - float z = f - n; - e[0] = 2 / w; - e[5] = 2 / h; - e[10] = -2 / z; - e[12] = -(r + l) / w; - e[13] = -(t + b) / h; - e[14] = -(f + n) / z; - e[15] = 1; - } - - // | e0 e4 e8 e12 | - // | e1 e5 e9 e13 | - // | e2 e6 e10 e14 | - // | e3 e7 e11 e15 | - // | e0 e4 e8 e12 | - // | e1 e5 e9 e13 | - // | e2 e6 e10 e14 | - // | e3 e7 e11 e15 | - - Matrix Matrix::operator * (const Matrix & m) const - { - Matrix t; - - t.e[0] = (e[0] * m.e[0]) + (e[4] * m.e[1]) + (e[8] * m.e[2]) + (e[12] * m.e[3]); - t.e[4] = (e[0] * m.e[4]) + (e[4] * m.e[5]) + (e[8] * m.e[6]) + (e[12] * m.e[7]); - t.e[8] = (e[0] * m.e[8]) + (e[4] * m.e[9]) + (e[8] * m.e[10]) + (e[12] * m.e[11]); - t.e[12] = (e[0] * m.e[12]) + (e[4] * m.e[13]) + (e[8] * m.e[14]) + (e[12] * m.e[15]); - - t.e[1] = (e[1] * m.e[0]) + (e[5] * m.e[1]) + (e[9] * m.e[2]) + (e[13] * m.e[3]); - t.e[5] = (e[1] * m.e[4]) + (e[5] * m.e[5]) + (e[9] * m.e[6]) + (e[13] * m.e[7]); - t.e[9] = (e[1] * m.e[8]) + (e[5] * m.e[9]) + (e[9] * m.e[10]) + (e[13] * m.e[11]); - t.e[13] = (e[1] * m.e[12]) + (e[5] * m.e[13]) + (e[9] * m.e[14]) + (e[13] * m.e[15]); - - t.e[2] = (e[2] * m.e[0]) + (e[6] * m.e[1]) + (e[10] * m.e[2]) + (e[14] * m.e[3]); - t.e[6] = (e[2] * m.e[4]) + (e[6] * m.e[5]) + (e[10] * m.e[6]) + (e[14] * m.e[7]); - t.e[10] = (e[2] * m.e[8]) + (e[6] * m.e[9]) + (e[10] * m.e[10]) + (e[14] * m.e[11]); - t.e[14] = (e[2] * m.e[12]) + (e[6] * m.e[13]) + (e[10] * m.e[14]) + (e[14] * m.e[15]); - - t.e[3] = (e[3] * m.e[0]) + (e[7] * m.e[1]) + (e[11] * m.e[2]) + (e[15] * m.e[3]); - t.e[7] = (e[3] * m.e[4]) + (e[7] * m.e[5]) + (e[11] * m.e[6]) + (e[15] * m.e[7]); - t.e[11] = (e[3] * m.e[8]) + (e[7] * m.e[9]) + (e[11] * m.e[10]) + (e[15] * m.e[11]); - t.e[15] = (e[3] * m.e[12]) + (e[7] * m.e[13]) + (e[11] * m.e[14]) + (e[15] * m.e[15]); - - return t; - } - - void Matrix::operator *= (const Matrix & m) - { - Matrix t = (*this) * m; - memcpy((void*)this->e, (void*)t.e, sizeof(float) * 16); - } - - const float * Matrix::getElements() const - { - return e; - } - - void Matrix::setIdentity() - { - memset(e, 0, sizeof(float) * 16); - e[0] = e[5] = e[10] = e[15] = 1; - } - - void Matrix::setTranslation(float x, float y) - { - setIdentity(); - e[12] = x; - e[13] = y; - } - - void Matrix::setRotation(float rad) - { - setIdentity(); - float c = cos(rad), s = sin(rad); - e[0] = c; e[4] = -s; - e[1] = s; e[5] = c; - } - - void Matrix::setScale(float sx, float sy) - { - setIdentity(); - e[0] = sx; - e[5] = sy; - } - - void Matrix::setShear(float kx, float ky) - { - setIdentity(); - e[1] = ky; - e[4] = kx; - } - - void Matrix::setTransformation(float x, float y, float angle, float sx, float sy, float ox, float oy) - { - memset(e, 0, sizeof(float) * 16); // zero out matrix - float c = cos(angle), s = sin(angle); - // matrix multiplication carried out on paper: - // |1 x| |c -s | |sx | |1 -ox| - // | 1 y| |s c | | sy | | 1 -oy| - // | 1 | | 1 | | 1 | | 1 | - // | 1| | 1| | 1| | 1 | - // move rotate scale origin - e[10] = e[15] = 1.0f; - e[0] = c * sx ; // = a - e[1] = s * sx ; // = b - e[4] = - s * sy; // = c - e[5] = c * sy; // = d - e[12] = x - ox * e[0] - oy * e[4]; - e[13] = y - ox * e[1] - oy * e[5]; - } - - void Matrix::translate(float x, float y) - { - Matrix t; - t.setTranslation(x, y); - this->operator *=(t); - } - - void Matrix::rotate(float rad) - { - Matrix t; - t.setRotation(rad); - this->operator *=(t); - } - - void Matrix::scale(float sx, float sy) - { - Matrix t; - t.setScale(sx, sy); - this->operator *=(t); - } - - void Matrix::shear(float kx, float ky) - { - Matrix t; - t.setShear(kx, ky); - this->operator *=(t); - } - - // | x | - // | y | - // | 0 | - // | 1 | - // | e0 e4 e8 e12 | - // | e1 e5 e9 e13 | - // | e2 e6 e10 e14 | - // | e3 e7 e11 e15 | - - void Matrix::transform(vertex * dst, const vertex * src, int size) const - { - for (int i = 0; i<size; ++i) - { - // Store in temp variables in case src = dst - float x = (e[0] * src[i].x) + (e[4] * src[i].y) + (0) + (e[12]); - float y = (e[1] * src[i].x) + (e[5] * src[i].y) + (0) + (e[13]); - - dst[i].x = x; - dst[i].y = y; - } - } - - } // namespace Math -} // namespace JinEngine
\ No newline at end of file diff --git a/src/libjin/Math/je_matrix.h b/src/libjin/Math/je_matrix.h deleted file mode 100644 index bbc831d..0000000 --- a/src/libjin/Math/je_matrix.h +++ /dev/null @@ -1,159 +0,0 @@ -#ifndef __JE_MATRIX_H__ -#define __JE_MATRIX_H__ - -namespace JinEngine -{ - namespace Math - { - - struct vertex - { - unsigned char r, g, b, a; - float x, y; - float s, t; - }; - /// - /// This class is the basis for all transformations in LOVE. Althought not - /// really needed for 2D, it contains 4x4 elements to be compatible with - /// OpenGL without conversions. - /// Ҫתõľ - /// https://blog.csdn.net/candycat1992/article/details/8830894 - /// - class Matrix - { - private: - - /// - /// | e0 e4 e8 e12 | - /// | e1 e5 e9 e13 | - /// | e2 e6 e10 e14 | - /// | e3 e7 e11 e15 | - /// - float e[16]; - - public: - - static const Matrix Identity; - - /// - /// Creates a new identity matrix. - /// - Matrix(); - - /// - /// Destructor. - /// - ~Matrix(); - - void setOrtho(float _left, float _right, float _bottom, float _top, float _near, float _far); - - /// - /// Multiplies this Matrix with another Matrix, changing neither. - /// @param m The Matrix to multiply with this Matrix. - /// @return The combined matrix. - /// - Matrix operator * (const Matrix & m) const; - - /// - /// Multiplies a Matrix into this Matrix. - /// @param m The Matrix to combine into this Matrix. - /// - void operator *= (const Matrix & m); - - /// - /// Gets a pointer to the 16 array elements. - /// @return The array elements. - /// - const float* getElements() const; - - /// - /// Resets this Matrix to the identity matrix. - /// - void setIdentity(); - - /// - /// Resets this Matrix to a translation. - /// @param x Translation along x-axis. - /// @param y Translation along y-axis. - /// - void setTranslation(float x, float y); - - /// - /// Resets this Matrix to a rotation. - /// @param r The angle in radians. - /// - void setRotation(float r); - - /// - /// Resets this Matrix to a scale transformation. - /// @param sx Scale factor along the x-axis. - /// @param sy Scale factor along the y-axis. - /// - void setScale(float sx, float sy); - - /// - /// Resets this Matrix to a shear transformation. - /// @param kx Shear along x-axis. - /// @param ky Shear along y-axis. - /// - void setShear(float kx, float ky); - - /// - /// Creates a transformation with a certain position, orientation, scale - /// and offset. Perfect for Drawables -- what a coincidence! - /// - /// @param x The translation along the x-axis. - /// @param y The translation along the y-axis. - /// @param angle The rotation (rad) around the center with offset (ox,oy). - /// @param sx Scale along x-axis. - /// @param sy Scale along y-axis. - /// @param ox The offset for rotation along the x-axis. - /// @param oy The offset for rotation along the y-axis. - /// @param kx Shear along x-axis - /// @param ky Shear along y-axis - /// - void setTransformation(float x, float y, float angle, float sx, float sy, float ox, float oy); - - /// - /// Multiplies this Matrix with a translation. - /// @param x Translation along x-axis. - /// @param y Translation along y-axis. - /// - void translate(float x, float y); - - /// - /// Multiplies this Matrix with a rotation. - /// @param r Angle in radians. - /// - void rotate(float r); - - /// - /// Multiplies this Matrix with a scale transformation. - /// @param sx Scale factor along the x-axis. - /// @param sy Scale factor along the y-axis. - /// - void scale(float sx, float sy); - - /// - /// Multiplies this Matrix with a shear transformation. - /// @param kx Shear along the x-axis. - /// @param ky Shear along the y-axis. - /// - void shear(float kx, float ky); - - /// - /// Transforms an array of vertices by this Matrix. The sources and - /// destination arrays may be the same. - /// - /// @param dst Storage for the transformed vertices. - /// @param src The source vertices. - /// @param size The number of vertices. - /// - void transform(vertex * dst, const vertex * src, int size) const; - - }; - - } // namespace Math -} // namespace JinEngine - -#endif // __JE_MATRIX_H__ diff --git a/src/libjin/Math/je_quad.h b/src/libjin/Math/je_quad.h deleted file mode 100644 index 8a7bd64..0000000 --- a/src/libjin/Math/je_quad.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef __JE_QUAD_H__ -#define __JE_QUAD_H__ - -namespace JinEngine -{ - namespace Math - { - - /// - /// - /// - struct Quad - { - /// - /// - /// - float x, y, w, h; - }; - - } // namespace Math -} // namespace JinEngine - -#endif // __JE_QUAD_H__ diff --git a/src/libjin/Math/je_random.cpp b/src/libjin/Math/je_random.cpp deleted file mode 100644 index 216fd79..0000000 --- a/src/libjin/Math/je_random.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include <math.h> -#include "je_random.h" - -namespace JinEngine -{ - namespace Math - { - - RandomGenerator::RandomGenerator(uint32 seed) - : mSeed(seed) - { - } - - uint32 RandomGenerator::rand() - { - unsigned int next = mSeed; - uint32 result; - - next *= 1103515245; - next += 12345; - result = (unsigned int)(next / 65536) % 2048; - - next *= 1103515245; - next += 12345; - result <<= 10; - result ^= (unsigned int)(next / 65536) % 1024; - - next *= 1103515245; - next += 12345; - result <<= 10; - result ^= (unsigned int)(next / 65536) % 1024; - - mSeed = next; - - return result; - } - - uint32 RandomGenerator::rand(uint32 min, uint32 max) - { - uint32 n = rand(); - return n % (max - min + 1) + min; - } - - float RandomGenerator::randf(float min, float max, int ac) - { - uint32 a = pow(10.f, ac); - uint32 n = rand(min*a, max*a); - return (float)n / a; - } - - } -}
\ No newline at end of file diff --git a/src/libjin/Math/je_random.h b/src/libjin/Math/je_random.h deleted file mode 100644 index 0f53155..0000000 --- a/src/libjin/Math/je_random.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef __JE_RANDOM_H__ -#define __JE_RANDOM_H__ - -#include "../common/je_types.h" - -namespace JinEngine -{ - namespace Math - { - - /// - /// A random number generator. - /// - class RandomGenerator - { - public: - RandomGenerator(uint32 seed); - - uint32 rand(); - - uint32 rand(uint32 min, uint32 max); - - float randf(float min, float max, int ac); - - private: - uint32 mSeed; - - }; - - } // namespace Math -} // namespace JinEngine - -#endif
\ No newline at end of file diff --git a/src/libjin/Math/je_transform.cpp b/src/libjin/Math/je_transform.cpp deleted file mode 100644 index c0676cb..0000000 --- a/src/libjin/Math/je_transform.cpp +++ /dev/null @@ -1,99 +0,0 @@ -#include "je_transform.h" - -namespace JinEngine -{ - namespace Math - { - - Transform::Transform() - : mScale(1, 1) - , mPosition(0, 0) - , mOrigin(0, 0) - , mRotation(0) - { - } - - void Transform::set(float x, float y, float sx, float sy, float r, float ox, float oy) - { - setPosition(x, y); - setScale(sx, sy); - setRotation(r); - setOrigin(ox, oy); - } - - void Transform::setScale(float sx, float sy) - { - mScale.set(sx, sy); - } - - Vector2<float> Transform::getScale() const - { - return mScale; - } - - void Transform::scale(float sx, float sy) - { - mScale.x *= sx; - mScale.y *= sy; - } - - void Transform::setPosition(const Vector2<float>& p) - { - setPosition(p.x, p.y); - } - - void Transform::setPosition(float x, float y) - { - mPosition.set(x, y); - } - - Vector2<float> Transform::getPosition() const - { - return mPosition; - } - - void Transform::move(float x, float y) - { - mPosition.x += x; - mPosition.y += y; - } - - void Transform::move(const Vector2<float>& v) - { - move(v.x, v.y); - } - - void Transform::setOrigin(float x, float y) - { - mOrigin.set(x, y); - } - - Vector2<float> Transform::getOrigin() const - { - return mOrigin; - } - - void Transform::setRotation(float r) - { - mRotation = r; - } - - float Transform::getRotation() const - { - return mRotation; - } - - void Transform::rotate(float r) - { - mRotation += r; - } - - Matrix Transform::getMatrix() const - { - Matrix m; - m.setTransformation(mPosition.x, mPosition.y, mRotation, mScale.x, mScale.y, mOrigin.x, mOrigin.y); - return m; - } - - } -}
\ No newline at end of file diff --git a/src/libjin/Math/je_transform.h b/src/libjin/Math/je_transform.h deleted file mode 100644 index cb1f0ee..0000000 --- a/src/libjin/Math/je_transform.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __JE_TRANSFORM_H__ -#define __JE_TRANSFORM_H__ - -#include "je_matrix.h" -#include "je_vector2.hpp" - -namespace JinEngine -{ - namespace Math - { - - class Transform - { - public: - Transform(); - - void set(float x, float y, float sx, float sy, float r, float ox, float oy); - - void setScale(float sx, float sy); - Vector2<float> getScale() const; - void scale(float sx, float sy); - - void setPosition(float x, float y); - void setPosition(const Vector2<float>& p); - Vector2<float> getPosition() const; - void move(float x, float y); - void move(const Vector2<float>& v); - - void setOrigin(float x, float y); - Vector2<float> getOrigin() const; - - void setRotation(float r); - float getRotation() const; - void rotate(float r); - - Matrix getMatrix() const; - - private: - Vector2<float> mScale; - Vector2<float> mPosition; - Vector2<float> mOrigin; - float mRotation; - - }; - - } -} - -#endif
\ No newline at end of file diff --git a/src/libjin/Math/je_vector2.hpp b/src/libjin/Math/je_vector2.hpp deleted file mode 100644 index b4cab44..0000000 --- a/src/libjin/Math/je_vector2.hpp +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef __JE_VECTOR_H__ -#define __JE_VECTOR_H__ - -namespace JinEngine -{ - namespace Math - { - - template<typename T> - class Vector2 - { - public: - Vector2() - { - data[0] = data[1] = 0; - } - Vector2(T _x, T _y) - { - data[0] = _x; - data[1] = _y; - } - Vector2(const Vector2<T>& v) - { - data[0] = v.data[0]; - data[1] = v.data[1]; - } - - void operator = (const Vector2<T>& v) - { - data[0] = v.data[0]; - data[1] = v.data[1]; - } - - Vector2<T> operator * (float n) - { - return Vector2<T>(data[0]*n, data[1]*n); - } - - void operator +=(const Vector2<T> v) - { - data[0] += v.data[0]; - data[1] += v.data[1]; - } - - void set(T _x, T _y) - { - data[0] = _x; - data[1] = _y; - } - - T &x = data[0], &y = data[1]; // xy - T &w = data[0], &h = data[1]; // wh - T &colum = data[0], &row = data[1]; // colum row - - private: - T data[2]; - - }; - - } // namespace Math -} // namespace JinEngine - -#endif
\ No newline at end of file diff --git a/src/libjin/Math/je_vector3.hpp b/src/libjin/Math/je_vector3.hpp deleted file mode 100644 index fdab2d0..0000000 --- a/src/libjin/Math/je_vector3.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef __JE_VECTOR3_H__ -#define __JE_VECTOR3_H__ - -namespace JinEngine -{ - namespace Math - { - - template<typename T> - class Vector3 - { - public: - Vector3() - { - data[0] = data[1] = data[2] = 0; - } - Vector3(T _x, T _y, T _z) - { - data[0] = _x; - data[1] = _y; - data[2] = _z; - } - Vector3(const Vector3<T>& v) - { - data[0] = v.data[0]; - data[1] = v.data[1]; - data[2] = v.data[2]; - } - - T &x = data[0], &y = data[1], &z = data[2]; // xyz - T &r = data[0], &g = data[1], &b = data[2]; // rgb - - private: - T data[3]; - - }; - - } // namespace Math -} // namespace JinEngine - -#endif
\ No newline at end of file diff --git a/src/libjin/Math/je_vector4.hpp b/src/libjin/Math/je_vector4.hpp deleted file mode 100644 index 5cd5b35..0000000 --- a/src/libjin/Math/je_vector4.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef __JE_VECTOR4_H__ -#define __JE_VECTOR4_H__ - -namespace JinEngine -{ - namespace Math - { - - template<typename T> - class Vector4 - { - public: - Vector4() - { - data[0] = data[1] = data[2] = data[3] = 0; - } - Vector4(T _x, T _y, T _z, T _t) - { - data[0] = _x; - data[1] = _y; - data[2] = _z; - data[3] = _t; - } - Vector4(const Vector4<T>& v) - { - data[0] = v.data[0]; - data[1] = v.data[1]; - data[2] = v.data[2]; - data[3] = v.data[3]; - } - - T &x = data[0], &y = data[1], &z = data[2], &t = data[3]; // xyzt - T &w = data[2], &h = data[3]; // xywh - T &r = data[0], &g = data[1], &b = data[2], &a = data[3]; // rgb - T &left = data[0], &right = data[1], &top = data[2], &bottom = data[3]; // lrtb - - private: - T data[4]; - - }; - - } // namespace Math -} // namespace JinEngine - -#endif
\ No newline at end of file |