#ifndef _VEC3_H #define _VEC3_H #include #include "matrix4.h" struct vec3 { float x, y, z; vec3() { x = 0.0f; y = 0.0f; z = 0.0f; } vec3(float x, float y, float z) { this->x = x; this->y = y; this->z = z; }; }; static vec3 operator *(const vec3& lhs, const matrix4& rhs) { vec3 ret; ret.x = rhs(0, 0) * lhs.x + rhs(0, 1) * lhs.y + rhs(0, 2) * lhs.z; ret.y = rhs(1, 0) * lhs.x + rhs(1, 1) * lhs.y + rhs(1, 2) * lhs.z; ret.z = rhs(2, 0) * lhs.x + rhs(2, 1) * lhs.y + rhs(2, 2) * lhs.z; return ret; }; #endif