summaryrefslogtreecommitdiff
path: root/utility
diff options
context:
space:
mode:
Diffstat (limited to 'utility')
-rw-r--r--utility/maths.cpp21
-rw-r--r--utility/maths.h4
2 files changed, 13 insertions, 12 deletions
diff --git a/utility/maths.cpp b/utility/maths.cpp
index 5cae411..e36c91e 100644
--- a/utility/maths.cpp
+++ b/utility/maths.cpp
@@ -39,15 +39,16 @@ normalize(float ang)
return ang;
}
-Arc
-create_arc(const glm::vec3 & centre3, const glm::vec3 & e0p, const glm::vec3 & e1p)
+Arc::Arc(const glm::vec3 & centre3, const glm::vec3 & e0p, const glm::vec3 & e1p) :
+ Arc([&]() -> Arc {
+ const auto diffa = e0p - centre3;
+ const auto diffb = e1p - centre3;
+ const auto anga = flat_angle(diffa);
+ const auto angb = [&diffb, &anga]() {
+ const auto angb = flat_angle(diffb);
+ return (angb < anga) ? angb + two_pi : angb;
+ }();
+ return {anga, angb};
+ }())
{
- const auto diffa = centre3 - e0p;
- const auto diffb = centre3 - e1p;
- const auto anga = flat_angle(diffa);
- const auto angb = [&diffb, &anga]() {
- const auto angb = flat_angle(diffb);
- return (angb < anga) ? angb + two_pi : angb;
- }();
- return {anga, angb};
}
diff --git a/utility/maths.h b/utility/maths.h
index 31f5960..572268a 100644
--- a/utility/maths.h
+++ b/utility/maths.h
@@ -8,6 +8,8 @@
struct Arc : public std::pair<float, float> {
using std::pair<float, float>::pair;
+ Arc(const glm::vec3 & centre3, const glm::vec3 & e0p, const glm::vec3 & e1p);
+
float
operator[](unsigned int i) const
{
@@ -44,6 +46,4 @@ arc_length(const Arc & arc)
float normalize(float ang);
-Arc create_arc(const glm::vec3 & centre3, const glm::vec3 & e0p, const glm::vec3 & e1p);
-
#endif