From 8cb74178c2b8e5883a1181af687fa8cfc0c6e5da Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 18 Nov 2018 23:44:40 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9=E7=9B=AE=E5=BD=95=E4=B8=BA=E5=B0=8F?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/Math/README.md | 1 - src/libjin/Math/je_bezier_curve.cpp | 0 src/libjin/Math/je_bezier_curve.h | 17 ---- src/libjin/Math/je_constant.h | 10 -- src/libjin/Math/je_ellipse.cpp | 0 src/libjin/Math/je_ellipse.h | 0 src/libjin/Math/je_math.h | 83 --------------- src/libjin/Math/je_matrix.cpp | 194 ------------------------------------ src/libjin/Math/je_matrix.h | 159 ----------------------------- src/libjin/Math/je_quad.h | 23 ----- src/libjin/Math/je_random.cpp | 52 ---------- src/libjin/Math/je_random.h | 33 ------ src/libjin/Math/je_transform.cpp | 99 ------------------ src/libjin/Math/je_transform.h | 49 --------- src/libjin/Math/je_vector2.hpp | 63 ------------ src/libjin/Math/je_vector3.hpp | 41 -------- src/libjin/Math/je_vector4.hpp | 45 --------- 17 files changed, 869 deletions(-) delete mode 100644 src/libjin/Math/README.md delete mode 100644 src/libjin/Math/je_bezier_curve.cpp delete mode 100644 src/libjin/Math/je_bezier_curve.h delete mode 100644 src/libjin/Math/je_constant.h delete mode 100644 src/libjin/Math/je_ellipse.cpp delete mode 100644 src/libjin/Math/je_ellipse.h delete mode 100644 src/libjin/Math/je_math.h delete mode 100644 src/libjin/Math/je_matrix.cpp delete mode 100644 src/libjin/Math/je_matrix.h delete mode 100644 src/libjin/Math/je_quad.h delete mode 100644 src/libjin/Math/je_random.cpp delete mode 100644 src/libjin/Math/je_random.h delete mode 100644 src/libjin/Math/je_transform.cpp delete mode 100644 src/libjin/Math/je_transform.h delete mode 100644 src/libjin/Math/je_vector2.hpp delete mode 100644 src/libjin/Math/je_vector3.hpp delete mode 100644 src/libjin/Math/je_vector4.hpp (limited to 'src/libjin/Math') 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 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 diff --git a/src/libjin/Math/je_ellipse.h b/src/libjin/Math/je_ellipse.h deleted file mode 100644 index e69de29..0000000 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 - inline T min(T a, T b) - { - return a < b ? a : b; - } - - template - inline T max(T a, T b) - { - return a > b ? a : b; - } - - template - inline T clamp(T a, T mi, T ma) - { - return min(max(a, mi), ma); - } - - template - inline bool within(T a, T mi, T ma) - { - return a >= mi && a <= ma; - } - - template - inline bool without(T a, T mi, T ma) - { - return a < mi || a > ma; - } - - template - inline T abs(T a) - { - return a > 0 ? a : -a; - } - - template - inline T lowerBound(T a, T lower) - { - return a < lower ? lower : a; - } - - template - inline T upperBound(T a, T upper) - { - return a > upper ? upper : a; - } - - template - 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(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 // memcpy -#include - -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 -#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 Transform::getScale() const - { - return mScale; - } - - void Transform::scale(float sx, float sy) - { - mScale.x *= sx; - mScale.y *= sy; - } - - void Transform::setPosition(const Vector2& p) - { - setPosition(p.x, p.y); - } - - void Transform::setPosition(float x, float y) - { - mPosition.set(x, y); - } - - Vector2 Transform::getPosition() const - { - return mPosition; - } - - void Transform::move(float x, float y) - { - mPosition.x += x; - mPosition.y += y; - } - - void Transform::move(const Vector2& v) - { - move(v.x, v.y); - } - - void Transform::setOrigin(float x, float y) - { - mOrigin.set(x, y); - } - - Vector2 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 getScale() const; - void scale(float sx, float sy); - - void setPosition(float x, float y); - void setPosition(const Vector2& p); - Vector2 getPosition() const; - void move(float x, float y); - void move(const Vector2& v); - - void setOrigin(float x, float y); - Vector2 getOrigin() const; - - void setRotation(float r); - float getRotation() const; - void rotate(float r); - - Matrix getMatrix() const; - - private: - Vector2 mScale; - Vector2 mPosition; - Vector2 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 - class Vector2 - { - public: - Vector2() - { - data[0] = data[1] = 0; - } - Vector2(T _x, T _y) - { - data[0] = _x; - data[1] = _y; - } - Vector2(const Vector2& v) - { - data[0] = v.data[0]; - data[1] = v.data[1]; - } - - void operator = (const Vector2& v) - { - data[0] = v.data[0]; - data[1] = v.data[1]; - } - - Vector2 operator * (float n) - { - return Vector2(data[0]*n, data[1]*n); - } - - void operator +=(const Vector2 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 - 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& 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 - 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& 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 -- cgit v1.1-26-g67d0