Skip to content

Commit c660578

Browse files
refactor: replace M_PI with C++20 std::numbers::pi_v<float>
1 parent e27a3c1 commit c660578

4 files changed

Lines changed: 13 additions & 11 deletions

File tree

‎include/Collider.hpp‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@
22
#include <algorithm>
33
#include <cmath>
44
#include <cstring>
5+
#include <numbers>
56
#include <vector>
67

7-
#ifndef M_PI
8-
#define M_PI 3.14159265358979323846
9-
#endif
10-
118
class CircleCollider;
129
class RectangleCollider;
1310
class PolygonCollider;
@@ -69,7 +66,7 @@ class Collider : public Collidable {
6966
};
7067

7168
namespace CollisionMath {
72-
constexpr float DEG_TO_RAD = M_PI / 180.0f;
69+
constexpr float DEG_TO_RAD = std::numbers::pi_v<float> / 180.0f;
7370

7471
inline int distanceSquared(int x1, int y1, int x2, int y2) {
7572
int dx = x1 - x2;

‎src/Collider.cpp‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "Collider.hpp"
22
#include <algorithm>
33
#include <cmath>
4+
#include <numbers>
45
#include <vector>
56

67
static std::vector<std::pair<int, int>>
@@ -12,9 +13,9 @@ getRegularPolyVertices(const RegularPolygonCollider *rp) {
1213

1314
float c = std::cos(rotationRad);
1415
float s = std::sin(rotationRad);
15-
float angleStep = 2.0f * M_PI / sides;
16+
float angleStep = 2.0f * std::numbers::pi_v<float> / sides;
1617

17-
float startAngle = -M_PI / 2.0f;
18+
float startAngle = -std::numbers::pi_v<float> / 2.0f;
1819

1920
for (int i = 0; i < sides; i++) {
2021
float angle = i * angleStep + startAngle;

‎src/Shapes/RegularPolygon.cpp‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <algorithm>
44
#include <cmath>
55
#include <memory>
6+
#include <numbers>
67

78
RegularPolygon::RegularPolygon(const RegularPolygonSideParams &params)
89
: Shape(params), useSideLength(true), sideLength(params.sideLength),
@@ -30,7 +31,8 @@ void RegularPolygon::updateLocalVertices() {
3031
localVertices.reserve(sides);
3132

3233
for (int i = 0; i < sides; i++) {
33-
float angle = 2.0f * M_PI / sides * i - M_PI / 2.0f;
34+
float angle = 2.0f * std::numbers::pi_v<float> / sides * i -
35+
std::numbers::pi_v<float> / 2.0f;
3436
localVertices.push_back({effectiveRadius * std::cos(angle),
3537
effectiveRadius * std::sin(angle)});
3638
}
@@ -49,7 +51,7 @@ void RegularPolygon::setRadius(int radius) {
4951
}
5052

5153
int RegularPolygon::calculateRadiusFromSideLength(int sideLength) {
52-
return sideLength / (2 * std::sin(M_PI / sides));
54+
return sideLength / (2 * std::sin(std::numbers::pi_v<float> / sides));
5355
}
5456

5557
std::unique_ptr<Collider> RegularPolygon::defaultCollider() {

‎src/Shapes/Shape.cpp‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <cmath>
55
#include <cstdint>
66
#include <memory>
7+
#include <numbers>
78

89
Matrix2D multiplyMatrices(const Matrix2D &m1, const Matrix2D &m2) {
910
Matrix2D out;
@@ -64,7 +65,7 @@ Shape::~Shape() = default;
6465

6566
void Shape::updateTrigCache() {
6667
if (!_trigCacheValid) {
67-
float angleRad = _rotationAngle * M_PI / 180.0f;
68+
float angleRad = _rotationAngle * std::numbers::pi_v<float> / 180.0f;
6869
_cosAngle = std::cos(angleRad);
6970
_sinAngle = std::sin(angleRad);
7071
_trigCacheValid = true;
@@ -73,7 +74,8 @@ void Shape::updateTrigCache() {
7374

7475
void Shape::updateTextureTrigCache() {
7576
if (!_texTrigCacheValid) {
76-
float angleRad = _uvTransform.rotation * M_PI / 180.0f;
77+
float angleRad =
78+
_uvTransform.rotation * std::numbers::pi_v<float> / 180.0f;
7779
_texCos = std::cos(angleRad);
7880
_texSin = std::sin(angleRad);
7981
_texTrigCacheValid = true;

0 commit comments

Comments
 (0)