From 6a9272d3af202274dfbced245f0ba20b263fcd8b Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Fri, 3 Sep 2021 18:09:00 -0400 Subject: refactor vec2/math --- common/math-vec2.hpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 common/math-vec2.hpp (limited to 'common/math-vec2.hpp') diff --git a/common/math-vec2.hpp b/common/math-vec2.hpp new file mode 100644 index 0000000..2622926 --- /dev/null +++ b/common/math-vec2.hpp @@ -0,0 +1,36 @@ +#pragma once + +#define _USE_MATH_DEFINES +#include + +template +struct vec2 { + T x; + T y; +}; + +using vec2d = vec2; + +inline vec2d direction(double degrees) +{ + double radians = degrees * M_PI / 180; + return { cos(radians), sin(radians) }; +} + +constexpr vec2d rotate(const vec2d& v, const vec2d& direction) +{ + return { + v.x * direction.x - v.y * direction.y, + v.x * direction.y + v.y * direction.x + }; +} + +inline double magnitude(const vec2d& v) +{ + return sqrt(v.x * v.x + v.y * v.y); +} + +inline double lp_distance(const vec2d& v, double p) +{ + return pow(pow(v.x, p) + pow(v.y, p), 1 / p); +} -- cgit v1.2.3 From 8427b91632b73cf2f608b36b14a47ddb4e5d3bf0 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Sat, 11 Sep 2021 14:57:11 -0700 Subject: Support infinite LP norm - any value greater than 64 --- common/math-vec2.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'common/math-vec2.hpp') diff --git a/common/math-vec2.hpp b/common/math-vec2.hpp index 2622926..ac6fd9b 100644 --- a/common/math-vec2.hpp +++ b/common/math-vec2.hpp @@ -32,5 +32,14 @@ inline double magnitude(const vec2d& v) inline double lp_distance(const vec2d& v, double p) { + if (p > 64) { + return lp_infinite_distance(v); + } + return pow(pow(v.x, p) + pow(v.y, p), 1 / p); } + +inline double lp_infinite_distance(const vec2d& v) +{ + return abs(v.x) > abs(v.y) ? abs(v.x) : abs(v.y); +} -- cgit v1.2.3 From affc97b1ef41437e7caba31be8e9b9212805182e Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Sat, 11 Sep 2021 17:38:59 -0700 Subject: YToXRatio fully works --- common/math-vec2.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'common/math-vec2.hpp') diff --git a/common/math-vec2.hpp b/common/math-vec2.hpp index ac6fd9b..a7656ed 100644 --- a/common/math-vec2.hpp +++ b/common/math-vec2.hpp @@ -30,6 +30,11 @@ inline double magnitude(const vec2d& v) return sqrt(v.x * v.x + v.y * v.y); } +inline double lp_infinite_distance(const vec2d& v) +{ + return abs(v.x) > abs(v.y) ? abs(v.x) : abs(v.y); +} + inline double lp_distance(const vec2d& v, double p) { if (p > 64) { @@ -38,8 +43,3 @@ inline double lp_distance(const vec2d& v, double p) return pow(pow(v.x, p) + pow(v.y, p), 1 / p); } - -inline double lp_infinite_distance(const vec2d& v) -{ - return abs(v.x) > abs(v.y) ? abs(v.x) : abs(v.y); -} -- cgit v1.2.3 From 6c037f92a350d8622f3739b1033c909912860d77 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 14 Sep 2021 00:55:21 -0700 Subject: Mostly working cap type in GUI --- common/math-vec2.hpp | 8 -------- 1 file changed, 8 deletions(-) (limited to 'common/math-vec2.hpp') diff --git a/common/math-vec2.hpp b/common/math-vec2.hpp index a7656ed..f84c4c0 100644 --- a/common/math-vec2.hpp +++ b/common/math-vec2.hpp @@ -30,16 +30,8 @@ inline double magnitude(const vec2d& v) return sqrt(v.x * v.x + v.y * v.y); } -inline double lp_infinite_distance(const vec2d& v) -{ - return abs(v.x) > abs(v.y) ? abs(v.x) : abs(v.y); -} inline double lp_distance(const vec2d& v, double p) { - if (p > 64) { - return lp_infinite_distance(v); - } - return pow(pow(v.x, p) + pow(v.y, p), 1 / p); } -- cgit v1.2.3