summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/maths.cpp18
-rw-r--r--lib/maths.h18
2 files changed, 19 insertions, 17 deletions
diff --git a/lib/maths.cpp b/lib/maths.cpp
index 0298363..e894d02 100644
--- a/lib/maths.cpp
+++ b/lib/maths.cpp
@@ -9,7 +9,7 @@ glm::mat4
flat_orientation(const glm::vec3 & diff)
{
static const auto oneeighty {glm::rotate(pi, up)};
- const auto flatdiff {glm::normalize(glm::vec3 {diff.x, 0, diff.z})};
+ const auto flatdiff {glm::normalize(!!diff)};
auto e {glm::orientation(flatdiff, north)};
// Handle if diff is exactly opposite to north
return (std::isnan(e[0][0])) ? oneeighty : e;
@@ -42,16 +42,16 @@ rotate_flat(float a)
return rotation<glm::mat2>(a, {0, 0}, {0, 1}, {1, 1}, {1, 0});
}
-// Create a roll transformation matrix
+// Create a yaw transformation matrix
glm::mat4
-rotate_roll(float a)
+rotate_yaw(float a)
{
- return rotation<glm::mat4>(a, {0, 0}, {0, 1}, {1, 1}, {1, 0});
+ return rotation<glm::mat4>(a, {0, 0}, {1, 0}, {1, 1}, {0, 1});
}
-// Create a yaw transformation matrix
+// Create a roll transformation matrix
glm::mat4
-rotate_yaw(float a)
+rotate_roll(float a)
{
return rotation<glm::mat4>(a, {0, 0}, {2, 0}, {2, 2}, {0, 2});
}
@@ -63,7 +63,7 @@ rotate_pitch(float a)
return rotation<glm::mat4>(a, {1, 1}, {1, 2}, {2, 2}, {2, 1});
}
-// Create a bomcined yaw, pitch, roll transformation matrix
+// Create a combined yaw, pitch, roll transformation matrix
glm::mat4
rotate_ypr(glm::vec3 a)
{
@@ -73,13 +73,13 @@ rotate_ypr(glm::vec3 a)
float
vector_yaw(const glm::vec3 & diff)
{
- return std::atan2(diff.x, diff.z);
+ return std::atan2(diff.x, diff.y);
}
float
vector_pitch(const glm::vec3 & diff)
{
- return std::atan(diff.y);
+ return std::atan(diff.z);
}
float
diff --git a/lib/maths.h b/lib/maths.h
index c02123a..285c69a 100644
--- a/lib/maths.h
+++ b/lib/maths.h
@@ -18,11 +18,13 @@ struct Arc : public std::pair<float, float> {
}
};
-constexpr const glm::vec3 up {0, 1, 0};
-constexpr const glm::vec3 north {0, 0, 1};
-constexpr const glm::vec3 south {0, 0, -1};
-constexpr const glm::vec3 east {-1, 0, 0};
-constexpr const glm::vec3 west {1, 0, 0};
+constexpr const glm::vec3 origin {0, 0, 0};
+constexpr const glm::vec3 up {0, 0, 1};
+constexpr const glm::vec3 down {0, 0, -1};
+constexpr const glm::vec3 north {0, 1, 0};
+constexpr const glm::vec3 south {0, -1, 0};
+constexpr const glm::vec3 east {1, 0, 0};
+constexpr const glm::vec3 west {-1, 0, 0};
constexpr auto half_pi {glm::half_pi<float>()};
constexpr auto quarter_pi {half_pi / 2};
constexpr auto pi {glm::pi<float>()};
@@ -73,13 +75,13 @@ rdiv(Ta a, Tb b)
constexpr inline glm::vec2
operator!(const glm::vec3 & v)
{
- return {v.x, v.z};
+ return {v.x, v.y};
}
constexpr inline glm::vec3
-operator^(const glm::vec2 & v, float y)
+operator^(const glm::vec2 & v, float z)
{
- return {v.x, y, v.y};
+ return {v.x, v.y, z};
}
constexpr inline glm::vec3