summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/maths.cpp12
-rw-r--r--lib/maths.h14
2 files changed, 12 insertions, 14 deletions
diff --git a/lib/maths.cpp b/lib/maths.cpp
index 60413f4..5800b1b 100644
--- a/lib/maths.cpp
+++ b/lib/maths.cpp
@@ -112,11 +112,7 @@ find_arc_centre(glm::vec2 as, float entrys, glm::vec2 bs, float entrye)
if (as == bs) {
return {as, false};
}
- const auto perps = entrys + half_pi;
- const auto perpe = entrye - half_pi;
- const glm::vec2 ad {std::sin(perps), std::cos(perps)};
- const glm::vec2 bd {std::sin(perpe), std::cos(perpe)};
- return find_arc_centre(as, ad, bs, bd);
+ return find_arc_centre(as, sincosf(entrys + half_pi), bs, sincosf(entrye - half_pi));
}
std::pair<glm::vec2, bool>
@@ -135,11 +131,7 @@ std::pair<float, float>
find_arcs_radius(glm::vec2 start, float entrys, glm::vec2 end, float entrye)
{
const auto getrad = [&](float leftOrRight) {
- const auto perps = entrys + leftOrRight;
- const auto perpe = entrye + leftOrRight;
- const glm::vec2 ad {std::sin(perps), std::cos(perps)};
- const glm::vec2 bd {std::sin(perpe), std::cos(perpe)};
- return find_arcs_radius(start, ad, end, bd);
+ return find_arcs_radius(start, sincosf(entrys + leftOrRight), end, sincosf(entrye + leftOrRight));
};
return {getrad(-half_pi), getrad(half_pi)};
}
diff --git a/lib/maths.h b/lib/maths.h
index d304b65..a3a391d 100644
--- a/lib/maths.h
+++ b/lib/maths.h
@@ -37,11 +37,11 @@ sincosf(float a, float & s, float & c)
return sincosf(a, &s, &c);
}
-inline std::pair<float, float>
+inline glm::vec2
sincosf(float a)
{
- std::pair<float, float> sc;
- sincosf(a, &sc.first, &sc.second);
+ glm::vec2 sc;
+ sincosf(a, sc.x, sc.y);
return sc;
}
@@ -62,9 +62,15 @@ operator!(const glm::vec3 & v)
}
constexpr inline glm::vec3
+operator^(const glm::vec2 & v, float y)
+{
+ return {v.x, y, v.y};
+}
+
+constexpr inline glm::vec3
operator!(const glm::vec2 & v)
{
- return {v.x, 0, v.y};
+ return v ^ 0.F;
}
constexpr inline float