graphene
diff src/gmath/vector.cc @ 4:d30e24132b6e
more gmath
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 25 Jul 2015 07:42:30 +0300 |
parents | d71b4e899e08 |
children | 2ce58d5309f0 |
line diff
1.1 --- a/src/gmath/vector.cc Sat Jul 25 05:52:39 2015 +0300 1.2 +++ b/src/gmath/vector.cc Sat Jul 25 07:42:30 2015 +0300 1.3 @@ -1,4 +1,5 @@ 1.4 -#include "vec.h" 1.5 +#include "vector.h" 1.6 +#include "matrix.h" 1.7 1.8 namespace gph { 1.9 1.10 @@ -7,6 +8,22 @@ 1.11 { 1.12 } 1.13 1.14 +Vector3 operator *(const Vector3 &v, const Matrix4x4 &m) 1.15 +{ 1.16 + float x = v.x * m[0][0] + v.y * m[1][0] + v.z * m[2][0] + m[3][0]; 1.17 + float y = v.x * m[0][1] + v.y * m[1][1] + v.z * m[2][1] + m[3][1]; 1.18 + float z = v.x * m[0][2] + v.y * m[1][2] + v.z * m[2][2] + m[3][2]; 1.19 + return Vector3(x, y, z); 1.20 +} 1.21 + 1.22 +Vector3 operator *(const Matrix4x4 &m, const Vector3 &v) 1.23 +{ 1.24 + float x = m[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z + m[0][3]; 1.25 + float y = m[1][0] * v.x + m[1][1] * v.y + m[1][2] * v.z + m[1][3]; 1.26 + float z = m[2][0] * v.x + m[2][1] * v.y + m[2][2] * v.z + m[2][3]; 1.27 + return Vector3(x, y, z); 1.28 +} 1.29 + 1.30 Vector4::Vector4(const Vector3 &v) 1.31 : x(v.x), y(v.y), z(v.z), w(1.0f) 1.32 {