diff --git a/src/python/magnum/math.cpp b/src/python/magnum/math.cpp index 9fa5b4b..51320aa 100644 --- a/src/python/magnum/math.cpp +++ b/src/python/magnum/math.cpp @@ -171,6 +171,19 @@ void math(py::module& root, py::module& m) { boolVector(boolVector2); boolVector(boolVector3); boolVector(boolVector4); + + /* Constants. Putting them into math like Python does and as doubles, since + Python doesn't really differentiate between 32bit and 64bit floats */ + m.attr("pi") = Constantsd::pi(); + m.attr("pi_half") = Constantsd::piHalf(); + m.attr("pi_quarter") = Constantsd::piQuarter(); + m.attr("tau") = Constantsd::tau(); + m.attr("e") = Constantsd::e(); + m.attr("sqrt2") = Constantsd::sqrt2(); + m.attr("sqrt3") = Constantsd::sqrt3(); + m.attr("sqrt_half") = Constantsd::sqrtHalf(); + m.attr("nan") = Constantsd::nan(); + m.attr("inf") = Constantsd::inf(); } } diff --git a/src/python/magnum/test/test_math.py b/src/python/magnum/test/test_math.py index 24af6f6..90bac8d 100644 --- a/src/python/magnum/test/test_math.py +++ b/src/python/magnum/test/test_math.py @@ -38,7 +38,7 @@ class Angle(unittest.TestCase): self.assertEqual(c, Deg(90.0)) def test_conversion(self): - self.assertEqual(Rad(Deg(90.0)), Rad(1.570796326794896)) + self.assertEqual(Rad(Deg(90.0)), Rad(math.pi_half)) def test_ops(self): self.assertEqual(-Deg(30.0), Deg(-30.0)) @@ -97,3 +97,8 @@ class BoolVector(unittest.TestCase): def test_repr(self): self.assertEqual(repr(BoolVector4(0b0101)), 'BoolVector(0b0101)') + +class Constants(unittest.TestCase): + def test(self): + self.assertAlmostEqual(math.sqrt2**2, 2.0, 6) + self.assertAlmostEqual(math.sqrt3**2, 3.0)