diff --git a/a8/vec3.cc b/a8/vec3.cc index 7b31c03..ac3cd43 100644 --- a/a8/vec3.cc +++ b/a8/vec3.cc @@ -5,9 +5,40 @@ #include #include +#include +#include + + #include namespace a8 { + void Vec3::RotateX(float angle) + { + Eigen::Vector3f v(x, y, z); + v = Eigen::AngleAxisf(angle * 3.1415926f, Eigen::Vector3f::UnitX()) * v; + x = v[0]; + y = v[1]; + z = v[2]; + } + + void Vec3::RotateY(float angle) + { + Eigen::Vector3f v(x, y, z); + v = Eigen::AngleAxisf(angle * 3.1415926f, Eigen::Vector3f::UnitY()) * v; + x = v[0]; + y = v[1]; + z = v[2]; + } + + void Vec3::RotateZ(float angle) + { + Eigen::Vector3f v(x, y, z); + v = Eigen::AngleAxisf(angle * 3.1415926f, Eigen::Vector3f::UnitZ()) * v; + x = v[0]; + y = v[1]; + z = v[2]; + } + } diff --git a/a8/vec3.h b/a8/vec3.h index 6ea9469..1a85c7c 100644 --- a/a8/vec3.h +++ b/a8/vec3.h @@ -9,7 +9,10 @@ namespace a8 float y = 0.0f; float z = 0.0f; - Vec3(float _x = 0.0f, float _y = 0.0f, float _z = 0.0f):x(_x), y(_y), z(_z) {}; + Vec3(float _x = 0.0f, float _y = 0.0f, float _z = 0.0f):x(_x), y(_y), z(_z) {}; + void RotateX(float angle); + void RotateY(float angle); + void RotateZ(float angle); }; }