Browse Source

python: expose Constants.

Only the double variants (since Python doesn't really differentiate
between 32bit and 64bit floats) and directly into math to mimic Python's
math module.
pull/1/head
Vladimír Vondruš 7 years ago
parent
commit
58070082fa
  1. 13
      src/python/magnum/math.cpp
  2. 7
      src/python/magnum/test/test_math.py

13
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();
}
}

7
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)

Loading…
Cancel
Save