예제 #1
0
    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)
예제 #2
0
    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 -=')
예제 #3
0
    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 -=")
예제 #4
0
 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 -=")
예제 #5
0
 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 -=')
예제 #6
0
    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)
예제 #7
0
 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)