def test_vec3(self): x, y, z = 1.0, 2.0, 3.0 v3 = b2Vec3(x, y, z) v = v3 + v3 self.assertAlmostEqual(v.x, x * 2) self.assertAlmostEqual(v.y, y * 2) self.assertAlmostEqual(v.z, z * 2) v = v3 - v3 self.assertAlmostEqual(v.x, 0) self.assertAlmostEqual(v.y, 0) self.assertAlmostEqual(v.z, 0) v = v3 / 2.0 self.assertAlmostEqual(v.x, x / 2) self.assertAlmostEqual(v.y, y / 2) self.assertAlmostEqual(v.z, z / 2) v = v3 * 2.0 self.assertAlmostEqual(v.x, x * 2) self.assertAlmostEqual(v.y, y * 2) self.assertAlmostEqual(v.z, z * 2) v = 0.5 * v3 self.assertAlmostEqual(v.x, x * 0.5) self.assertAlmostEqual(v.y, y * 0.5) self.assertAlmostEqual(v.z, z * 0.5) v = 2.0 * v3 self.assertAlmostEqual(v.x, x * 2) self.assertAlmostEqual(v.y, y * 2) self.assertAlmostEqual(v.z, z * 2) v = b2Vec3(x, y, z) v += (0.1, 0.1, 0.1) self.assertAlmostEqual(v.x, x + 0.1, places=2) self.assertAlmostEqual(v.y, y + 0.1, places=2) self.assertAlmostEqual(v.z, z + 0.1, places=2) v -= (0.1, 0.1, 0.1) self.assertAlmostEqual(v.x, x, places=2) self.assertAlmostEqual(v.y, y, places=2) self.assertAlmostEqual(v.z, z, places=2) v /= 1 self.assertAlmostEqual(v.x, x, places=2) self.assertAlmostEqual(v.y, y, places=2) self.assertAlmostEqual(v.z, z, places=2) v *= 1 self.assertAlmostEqual(v.x, x, places=2) self.assertAlmostEqual(v.y, y, places=2) self.assertAlmostEqual(v.z, z, places=2)
def test_matrix(self): x, y, z = 1.0, 2.0, 3.0 v2 = b2Vec2(x, y) v3 = b2Vec3(x, y, z) self.checkAlmostEqual(v2.skew, (-v2.y, v2.x), msg='skew') m2 = b2Mat22((x, y), (y, x)) # Note that you can't do: # m2 = b2Mat22(col1=(x, y), col2=(y, x)) # as SWIG will not allow the kwargs option to be used when there are multiple constructors m3 = b2Mat33((x, y, z), (z, y, x), (y, x, z)) m = m2 + m2 self.checkAlmostEqual(m.col1, (x + x, y + y), msg='b2Mat22 +') self.checkAlmostEqual(m.col2, (y + y, x + x), msg='b2Mat22 +') m = m2 - m2 self.checkAlmostEqual(m.col1, (0, 0), msg='b2Mat22 -') self.checkAlmostEqual(m.col2, (0, 0), msg='b2Mat22 -') # x y * x # y x y v = m2 * v2 self.checkAlmostEqual(v, (x * x + y * y, y * x + y * x), msg='b2Mat22 * b2Vec2') i = m2.inverse i = m2.angle m = m2 * m2 self.checkAlmostEqual(m.col1, (x * x + y * y, y * x + y * x), msg='b2Mat22 * b2Mat22') self.checkAlmostEqual(m.col2, (x * y + y * x, y * y + x * x), msg='b2Mat22 * b2Mat22') m2 += m2 self.checkAlmostEqual(m2.col1, (x + x, y + y), msg='b2Mat22 +=') self.checkAlmostEqual(m2.col2, (y + y, x + x), msg='b2Mat22 +=') m2 -= m2 self.checkAlmostEqual(m2.col1, (0, 0), msg='b2Mat22 -=') self.checkAlmostEqual(m2.col2, (0, 0), msg='b2Mat22 -=') m = m3 + m3 self.checkAlmostEqual(m.col1, (x + x, y + y, z + z), msg='b2Mat33 +') self.checkAlmostEqual(m.col2, (z + z, y + y, x + x), msg='b2Mat33 +') self.checkAlmostEqual(m.col3, (y + y, x + x, z + z), msg='b2Mat33 +') m = m3 - m3 self.checkAlmostEqual(m.col1, (0, 0, 0), msg='b2Mat33 -') self.checkAlmostEqual(m.col2, (0, 0, 0), msg='b2Mat33 -') self.checkAlmostEqual(m.col3, (0, 0, 0), msg='b2Mat33 -') m3 += m3 self.checkAlmostEqual(m3.col1, (x + x, y + y, z + z), msg='b2Mat33 +=') self.checkAlmostEqual(m3.col2, (z + z, y + y, x + x), msg='b2Mat33 +=') self.checkAlmostEqual(m3.col3, (y + y, x + x, z + z), msg='b2Mat33 +=') m3 -= m3 self.checkAlmostEqual(m3.col1, (0, 0, 0), msg='b2Mat33 -=') self.checkAlmostEqual(m3.col2, (0, 0, 0), msg='b2Mat33 -=') self.checkAlmostEqual(m3.col3, (0, 0, 0), msg='b2Mat33 -=')
def test_matrix(self): x, y, z = 1.0, 2.0, 3.0 v2 = b2Vec2(x, y) v3 = b2Vec3(x, y, z) self.checkAlmostEqual(v2.skew, (-v2.y, v2.x), msg="skew") m2 = b2Mat22((x, y), (y, x)) # Note that you can't do: # m2 = b2Mat22(col1=(x, y), col2=(y, x)) # as SWIG will not allow the kwargs option to be used when there are multiple constructors m3 = b2Mat33((x, y, z), (z, y, x), (y, x, z)) m = m2 + m2 self.checkAlmostEqual(m.col1, (x + x, y + y), msg="b2Mat22 +") self.checkAlmostEqual(m.col2, (y + y, x + x), msg="b2Mat22 +") m = m2 - m2 self.checkAlmostEqual(m.col1, (0, 0), msg="b2Mat22 -") self.checkAlmostEqual(m.col2, (0, 0), msg="b2Mat22 -") # x y * x # y x y v = m2 * v2 self.checkAlmostEqual(v, (x * x + y * y, y * x + y * x), msg="b2Mat22 * b2Vec2") i = m2.inverse i = m2.angle m = m2 * m2 self.checkAlmostEqual(m.col1, (x * x + y * y, y * x + y * x), msg="b2Mat22 * b2Mat22") self.checkAlmostEqual(m.col2, (x * y + y * x, y * y + x * x), msg="b2Mat22 * b2Mat22") m2 += m2 self.checkAlmostEqual(m2.col1, (x + x, y + y), msg="b2Mat22 +=") self.checkAlmostEqual(m2.col2, (y + y, x + x), msg="b2Mat22 +=") m2 -= m2 self.checkAlmostEqual(m2.col1, (0, 0), msg="b2Mat22 -=") self.checkAlmostEqual(m2.col2, (0, 0), msg="b2Mat22 -=") m = m3 + m3 self.checkAlmostEqual(m.col1, (x + x, y + y, z + z), msg="b2Mat33 +") self.checkAlmostEqual(m.col2, (z + z, y + y, x + x), msg="b2Mat33 +") self.checkAlmostEqual(m.col3, (y + y, x + x, z + z), msg="b2Mat33 +") m = m3 - m3 self.checkAlmostEqual(m.col1, (0, 0, 0), msg="b2Mat33 -") self.checkAlmostEqual(m.col2, (0, 0, 0), msg="b2Mat33 -") self.checkAlmostEqual(m.col3, (0, 0, 0), msg="b2Mat33 -") m3 += m3 self.checkAlmostEqual(m3.col1, (x + x, y + y, z + z), msg="b2Mat33 +=") self.checkAlmostEqual(m3.col2, (z + z, y + y, x + x), msg="b2Mat33 +=") self.checkAlmostEqual(m3.col3, (y + y, x + x, z + z), msg="b2Mat33 +=") m3 -= m3 self.checkAlmostEqual(m3.col1, (0, 0, 0), msg="b2Mat33 -=") self.checkAlmostEqual(m3.col2, (0, 0, 0), msg="b2Mat33 -=") self.checkAlmostEqual(m3.col3, (0, 0, 0), msg="b2Mat33 -=")
def test_mat33(self): x, y, z = 1.0, 2.0, 3.0 v3 = b2Vec3(x, y, z) m3 = b2Mat33((x, y, z), (z, y, x), (y, x, z)) m = m3 + m3 self.checkAlmostEqual(m.col1, (x + x, y + y, z + z), msg="b2Mat33 +") self.checkAlmostEqual(m.col2, (z + z, y + y, x + x), msg="b2Mat33 +") self.checkAlmostEqual(m.col3, (y + y, x + x, z + z), msg="b2Mat33 +") m = m3 - m3 self.checkAlmostEqual(m.col1, (0, 0, 0), msg="b2Mat33 -") self.checkAlmostEqual(m.col2, (0, 0, 0), msg="b2Mat33 -") self.checkAlmostEqual(m.col3, (0, 0, 0), msg="b2Mat33 -") m3 += m3 self.checkAlmostEqual(m3.col1, (x + x, y + y, z + z), msg="b2Mat33 +=") self.checkAlmostEqual(m3.col2, (z + z, y + y, x + x), msg="b2Mat33 +=") self.checkAlmostEqual(m3.col3, (y + y, x + x, z + z), msg="b2Mat33 +=") m3 -= m3 self.checkAlmostEqual(m3.col1, (0, 0, 0), msg="b2Mat33 -=") self.checkAlmostEqual(m3.col2, (0, 0, 0), msg="b2Mat33 -=") self.checkAlmostEqual(m3.col3, (0, 0, 0), msg="b2Mat33 -=")
def test_mat33(self): x, y, z = 1.0, 2.0, 3.0 v3 = b2Vec3(x, y, z) m3 = b2Mat33((x, y, z), (z, y, x), (y, x, z)) m = m3 + m3 self.checkAlmostEqual(m.col1, (x+x, y+y, z+z), msg='b2Mat33 +') self.checkAlmostEqual(m.col2, (z+z, y+y, x+x), msg='b2Mat33 +') self.checkAlmostEqual(m.col3, (y+y, x+x, z+z), msg='b2Mat33 +') m = m3 - m3 self.checkAlmostEqual(m.col1, (0,0,0), msg='b2Mat33 -') self.checkAlmostEqual(m.col2, (0,0,0), msg='b2Mat33 -') self.checkAlmostEqual(m.col3, (0,0,0), msg='b2Mat33 -') m3 += m3 self.checkAlmostEqual(m3.col1, (x+x, y+y, z+z), msg='b2Mat33 +=') self.checkAlmostEqual(m3.col2, (z+z, y+y, x+x), msg='b2Mat33 +=') self.checkAlmostEqual(m3.col3, (y+y, x+x, z+z), msg='b2Mat33 +=') m3 -= m3 self.checkAlmostEqual(m3.col1, (0,0,0), msg='b2Mat33 -=') self.checkAlmostEqual(m3.col2, (0,0,0), msg='b2Mat33 -=') self.checkAlmostEqual(m3.col3, (0,0,0), msg='b2Mat33 -=')
def test_vector(self): x, y, z = 1.0, 2.0, 3.0 v2 = b2Vec2(x, y) v3 = b2Vec3(x, y, z) v = b2Vec2(x, y) v += (0,0) self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) v -= (0,0) self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) v /= 1 self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) v *= 1 self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) v = v2 + v2 self.assertAlmostEquals(v.x, x*2) self.assertAlmostEquals(v.y, y*2) v = v2 - v2 self.assertAlmostEquals(v.x, 0) self.assertAlmostEquals(v.y, 0) v = v2 / 2.0 self.assertAlmostEquals(v.x, x/2) self.assertAlmostEquals(v.y, y/2) v = v2 * 2.0 self.assertAlmostEquals(v.x, x*2) self.assertAlmostEquals(v.y, y*2) v = 0.5 * v2 self.assertAlmostEquals(v.x, x*0.5) self.assertAlmostEquals(v.y, y*0.5) v = 2.0 * v2 self.assertAlmostEquals(v.x, x*2) self.assertAlmostEquals(v.y, y*2) v = v3 + v3 self.assertAlmostEquals(v.x, x*2) self.assertAlmostEquals(v.y, y*2) self.assertAlmostEquals(v.z, z*2) v = v3 - v3 self.assertAlmostEquals(v.x, 0) self.assertAlmostEquals(v.y, 0) self.assertAlmostEquals(v.z, 0) v = v3 / 2.0 self.assertAlmostEquals(v.x, x/2) self.assertAlmostEquals(v.y, y/2) self.assertAlmostEquals(v.z, z/2) v = v3 * 2.0 self.assertAlmostEquals(v.x, x*2) self.assertAlmostEquals(v.y, y*2) self.assertAlmostEquals(v.z, z*2) v = 0.5 * v3 self.assertAlmostEquals(v.x, x*0.5) self.assertAlmostEquals(v.y, y*0.5) self.assertAlmostEquals(v.z, z*0.5) v = 2.0 * v3 self.assertAlmostEquals(v.x, x*2) self.assertAlmostEquals(v.y, y*2) self.assertAlmostEquals(v.z, z*2) v = b2Vec3(x, y, z) v += (0,0,0) self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) self.assertAlmostEquals(v.z, z) v -= (0,0,0) self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) self.assertAlmostEquals(v.z, z) v /= 1 self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) self.assertAlmostEquals(v.z, z) v *= 1 self.assertAlmostEquals(v.x, x) self.assertAlmostEquals(v.y, y) self.assertAlmostEquals(v.z, z)
def test_vec3_zero(self): v3 = b2Vec3() self.assertAlmostEqual(v3.x, 0.0) self.assertAlmostEqual(v3.y, 0.0) self.assertAlmostEqual(v3.z, 0.0)