2018-02-26 23:50:50 +01:00
|
|
|
#ifndef _VEC3_H
|
|
|
|
#define _VEC3_H
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
#include "matrix4.h"
|
|
|
|
|
|
|
|
struct vec3
|
|
|
|
{
|
2018-08-29 21:40:59 +02:00
|
|
|
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;
|
|
|
|
};
|
2018-02-26 23:50:50 +01:00
|
|
|
};
|
2018-08-29 21:40:59 +02:00
|
|
|
|
|
|
|
static vec3 operator*( const vec3& lhs, const matrix4& rhs )
|
2018-02-26 23:50:50 +01:00
|
|
|
{
|
2018-08-29 21:40:59 +02:00
|
|
|
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;
|
2018-02-26 23:50:50 +01:00
|
|
|
};
|
|
|
|
#endif
|