diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2024-02-28 13:26:24 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-02-28 13:26:24 +0100 |
commit | 9e08dc86b8b9fa9830574ff6116d4af5541fc47e (patch) | |
tree | 7a41d076ab1cdcb0282cae07b4ce3bf9b0069adc /src | |
parent | 20e95a5cf095acbc9c76f335258a9bf5e220aaeb (diff) |
cleanup some math code
Diffstat (limited to 'src')
-rw-r--r-- | src/critter.cpp | 4 | ||||
-rw-r--r-- | src/raycast.cpp | 12 |
2 files changed, 6 insertions, 10 deletions
diff --git a/src/critter.cpp b/src/critter.cpp index 9d7c860c..4068c782 100644 --- a/src/critter.cpp +++ b/src/critter.cpp @@ -191,9 +191,7 @@ void critter::update_playable(size_t i, float dt) auto off_i = Vector2i(offset_); if (!off_i.isZero()) { - offset_frac = - Vector2us(Vector2(Math::abs(std::fmod(offset_.x(), 1.f)), - Math::abs(std::fmod(offset_.y(), 1.f))) * frac); + offset_frac = Vector2us(Math::abs(Math::fmod(offset_, 1.f)) * frac); if (can_move_to(off_i)) { move_to(i, off_i, new_r); diff --git a/src/raycast.cpp b/src/raycast.cpp index b4d64a85..92d81452 100644 --- a/src/raycast.cpp +++ b/src/raycast.cpp @@ -121,9 +121,9 @@ raycast_result_s do_raycasting(std::conditional_t<EnableDiagnostics, raycast_dia using Math::min; using Math::abs; using Math::ceil; + using Math::copysign; - constexpr float eps = 1e-6f; - constexpr float inv_eps = 1/eps; + constexpr auto inv_eps = 1e6f, eps = 1/inv_eps; constexpr int fuzz = 2; constexpr auto fuzz2 = 0.5f; @@ -158,10 +158,8 @@ raycast_result_s do_raycasting(std::conditional_t<EnableDiagnostics, raycast_dia size_[short_axis] = (short_len+nsteps*2-1) / nsteps; size_[long_axis] = (long_len+nsteps-1) / nsteps; - auto dir_inv_norm = Vector2( - abs(dir.x()) < eps ? std::copysign(inv_eps, dir.x()) : 1 / dir.x(), - abs(dir.y()) < eps ? std::copysign(inv_eps, dir.y()) : 1 / dir.y() - ); + auto dir_inv_norm = Vector2(abs(dir.x()) < eps ? copysign(inv_eps, dir.x()) : 1 / dir.x(), + abs(dir.y()) < eps ? copysign(inv_eps, dir.y()) : 1 / dir.y()); auto signs = ray_aabb_signs(dir_inv_norm); result = { @@ -199,7 +197,7 @@ raycast_result_s do_raycasting(std::conditional_t<EnableDiagnostics, raycast_dia for (unsigned k = 0; b && k <= nsteps; k++) { auto pos_ = ceil(abs(V * (float)k/(float)nsteps)); - auto pos = Vector2i{(int)std::copysign(pos_.x(), V.x()), (int)std::copysign(pos_.y(), V.y())}; + auto pos = Vector2i(copysign(pos_, V)); auto size = size_; if (k == 0) |