瀏覽代碼

Add definition for PI and PI_2

M_PI and M_PI_2 are not C++ standard and are therefore not present, in
MinGW-w64 gcc 5.1.0 for example. We therefore replace it with an own
definition.

Since math.h was only included for M_PI and M_PI_2 makros, we can now
remove it.

Signed-off-by: Squareys <[email protected]>
Squareys 9 年之前
父節點
當前提交
7c0e40a3f4
共有 2 個文件被更改,包括 5 次插入7 次删除
  1. 3 5
      contrib/poly2tri/poly2tri/common/utils.h
  2. 2 2
      contrib/poly2tri/poly2tri/sweep/sweep.cc

+ 3 - 5
contrib/poly2tri/poly2tri/common/utils.h

@@ -32,15 +32,13 @@
 #ifndef UTILS_H
 #define UTILS_H
 
-// Otherwise #defines like M_PI are undeclared under Visual Studio
-#define _USE_MATH_DEFINES
-
 #include <exception>
-#include <math.h>
 
 namespace p2t {
 
-const double PI_3div4 = 3 * M_PI / 4;
+const double PI = 3.1415926535897932384626433832795029;
+const double PI_2 = 2 * PI;
+const double PI_3div4 = 3 * PI / 4;
 const double EPSILON = 1e-15;
 
 enum Orientation { CW, CCW, COLLINEAR };

+ 2 - 2
contrib/poly2tri/poly2tri/sweep/sweep.cc

@@ -231,7 +231,7 @@ void Sweep::FillAdvancingFront(SweepContext& tcx, Node& n)
 
   while (node->next) {
     double angle = HoleAngle(*node);
-    if (angle > M_PI_2 || angle < -M_PI_2) break;
+    if (angle > PI || angle < -PI_2) break;
     Fill(tcx, *node);
     node = node->next;
   }
@@ -241,7 +241,7 @@ void Sweep::FillAdvancingFront(SweepContext& tcx, Node& n)
 
   while (node->prev) {
     double angle = HoleAngle(*node);
-    if (angle > M_PI_2 || angle < -M_PI_2) break;
+    if (angle > PI_2 || angle < -PI_2) break;
     Fill(tcx, *node);
     node = node->prev;
   }