summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--utility/maths.cpp13
-rw-r--r--utility/maths.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/utility/maths.cpp b/utility/maths.cpp
index 75346a0..543c887 100644
--- a/utility/maths.cpp
+++ b/utility/maths.cpp
@@ -84,6 +84,19 @@ find_arc_centre(glm::vec2 as, glm::vec2 ad, glm::vec2 bs, glm::vec2 bd)
throw std::runtime_error("no intersection");
}
+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 {getrad(-half_pi), getrad(half_pi)};
+}
+
float
find_arcs_radius(glm::vec2 start, glm::vec2 ad, glm::vec2 end, glm::vec2 bd)
{
diff --git a/utility/maths.h b/utility/maths.h
index b0048c3..89cb7cb 100644
--- a/utility/maths.h
+++ b/utility/maths.h
@@ -55,6 +55,7 @@ float normalize(float ang);
std::pair<glm::vec2, bool> find_arc_centre(glm::vec2 start, float entrys, glm::vec2 end, float entrye);
std::pair<glm::vec2, bool> find_arc_centre(glm::vec2 start, glm::vec2 ad, glm::vec2 end, glm::vec2 bd);
+std::pair<float, float> find_arcs_radius(glm::vec2 start, float entrys, glm::vec2 end, float entrye);
float find_arcs_radius(glm::vec2 start, glm::vec2 ad, glm::vec2 end, glm::vec2 bd);
#endif