From 253a0b73f0975d8f14c3a3f2a06675b53c736071 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 3 Mar 2021 01:25:15 +0000 Subject: Simplify a lot of code with sincosf --- lib/maths.cpp | 12 ++---------- lib/maths.h | 14 ++++++++++---- 2 files changed, 12 insertions(+), 14 deletions(-) (limited to 'lib') 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 @@ -135,11 +131,7 @@ std::pair 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 +inline glm::vec2 sincosf(float a) { - std::pair sc; - sincosf(a, &sc.first, &sc.second); + glm::vec2 sc; + sincosf(a, sc.x, sc.y); return sc; } @@ -61,10 +61,16 @@ operator!(const glm::vec3 & v) return {v.x, v.z}; } +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 -- cgit v1.2.3