From a387c85802d5d239a84b46c9c5cfab13421b12b8 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Wed, 17 Jul 2024 01:28:10 +0800 Subject: [PATCH] added TransformPosition/Direction/Normal functions. --- inc/hgl/math/Matrix.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/inc/hgl/math/Matrix.h b/inc/hgl/math/Matrix.h index 373c1d8..7bb052c 100644 --- a/inc/hgl/math/Matrix.h +++ b/inc/hgl/math/Matrix.h @@ -143,9 +143,29 @@ namespace hgl inline Vector3f rotate(const Vector3f &v3f,float angle,const Vector3f &axis) { - Vector4f result = rotate(angle, axis)*Vector4f(v3f, 1.0f); + Vector4f result = rotate(angle, axis)*Vector4f(v3f, 1.0f); - return Vector3f(result.x,result.y,result.z); + return Vector3f(result.x,result.y,result.z); + } + + inline Vector3f TransformPosition(const Matrix4f &m,const Vector3f &v) + { + return Vector3f(m*Vector4f(v,1.0f)); + } + + inline Vector3f TransformDirection(const Matrix4f &m,const Vector3f &v) + { + return Vector3f(m*Vector4f(v,0.0f)); + } + + inline Vector3f TransformNormal(const Matrix4f &m,const Vector3f &v) + { + return normalize(Vector3f(transpose(inverse(m))*Vector4f(v,0.0f))); + } + + inline Vector3f TransformNormal(const Matrix3f &m,const Vector3f &v) + { + return normalize(m*v); } }//namespace hgl #endif//HGL_ALGORITHM_MATH_VECTOR_MATRIX_INCLUDE