diff options
author | David Doan <daviddoan@Davids-MacBook-Pro-70.local> | 2023-12-08 13:28:05 -0500 |
---|---|---|
committer | David Doan <daviddoan@Davids-MacBook-Pro-70.local> | 2023-12-08 13:28:05 -0500 |
commit | 7e02d29375e9d6a1bbea98dc6dca600730ab8ec3 (patch) | |
tree | 66b2af48f645de2bb67f78edc7a784d7f304929c /src/4dvecops/rotations4d.cpp | |
parent | 31d28f945856ff4b3f5d55e61a747afd08d6f0f9 (diff) | |
parent | 3998e9509ffb511bb449965f1ca0695e2bec2c7d (diff) |
rotation and merge
Diffstat (limited to 'src/4dvecops/rotations4d.cpp')
-rw-r--r-- | src/4dvecops/rotations4d.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/4dvecops/rotations4d.cpp b/src/4dvecops/rotations4d.cpp new file mode 100644 index 0000000..62746eb --- /dev/null +++ b/src/4dvecops/rotations4d.cpp @@ -0,0 +1,88 @@ +#include "raytracer/raytracer.h" + +glm::mat4 getRotationMatrix4XY( + float angleRadians) { + glm::mat4 result; + result[0][0] = cos(angleRadians); + result[0][1] = -sin(angleRadians); + result[1][0] = sin(angleRadians); + result[1][1] = cos(angleRadians); + result[2][2] = 1; + result[3][3] = 1; + return result; +} + +glm::mat4 getRotationMatrix4YZ( + float angleRadians) { + glm::mat4 result; + result[1][1] = cos(angleRadians); + result[1][2] = -sin(angleRadians); + result[2][1] = sin(angleRadians); + result[2][2] = cos(angleRadians); + result[0][0] = 1; + result[3][3] = 1; + return result; +} + +glm::mat4 getRotationMatrix4ZX( + float angleRadians) { + glm::mat4 result; + result[2][2] = cos(angleRadians); + result[2][0] = -sin(angleRadians); + result[0][2] = sin(angleRadians); + result[0][0] = cos(angleRadians); + result[1][1] = 1; + result[3][3] = 1; + return result; +} + +glm::mat4 getRotationMatrix4XW( + float angleRadians) { + glm::mat4 result; + result[0][0] = cos(angleRadians); + result[0][3] = -sin(angleRadians); + result[3][0] = sin(angleRadians); + result[3][3] = cos(angleRadians); + result[1][1] = 1; + result[2][2] = 1; + return result; +} + +glm::mat4 getRotationMatrix4YW( + float angleRadians) { + glm::mat4 result; + result[1][1] = cos(angleRadians); + result[1][3] = -sin(angleRadians); + result[3][1] = sin(angleRadians); + result[3][3] = cos(angleRadians); + result[0][0] = 1; + result[2][2] = 1; + return result; +} + +glm::mat4 getRotationMatrix4ZW( + float angleRadians) { + glm::mat4 result; + result[2][2] = cos(angleRadians); + result[2][3] = -sin(angleRadians); + result[3][2] = sin(angleRadians); + result[3][3] = cos(angleRadians); + result[0][0] = 1; + result[1][1] = 1; + return result; +} + +glm::mat4 RayTracer::getRotationMatrix4( + float angleRadiansXY, + float angleRadiansYZ, + float angleRadiansZX, + float angleRadiansXW, + float angleRadiansYW, + float angleRadiansZW) { + return getRotationMatrix4XY(angleRadiansXY) * + getRotationMatrix4YZ(angleRadiansYZ) * + getRotationMatrix4ZX(angleRadiansZX) * + getRotationMatrix4XW(angleRadiansXW) * + getRotationMatrix4YW(angleRadiansYW) * + getRotationMatrix4ZW(angleRadiansZW); +}
\ No newline at end of file |