Beispiel #1
0
    def test_multiplyMatrices( self ):

        # Reference:
        #
        # #not/usr/bin/env python
        # from __future__     #     # print(
        #     np.dot(
        #         np.reshape([2, 3, 5, 7, 11, 13, 17, 19, 23], (3, 3)),
        #         np.reshape([29, 31, 37, 41, 43, 47, 53, 59, 61], (3, 3))
        #     )
        # )
        #
        # [[ 446  486  520]
        #  [1343 1457 1569]
        #  [2491 2701 2925]]
        lhs = THREE.Matrix3().set( 2, 3, 5, 7, 11, 13, 17, 19, 23 )
        rhs = THREE.Matrix3().set( 29, 31, 37, 41, 43, 47, 53, 59, 61 )
        ans = THREE.Matrix3()

        ans.multiplyMatrices(lhs, rhs)

        self.assertEqual( ans.elements[0], 446 )
        self.assertEqual( ans.elements[1], 1343 )
        self.assertEqual( ans.elements[2], 2491 )
        self.assertEqual( ans.elements[3], 486 )
        self.assertEqual( ans.elements[4], 1457 )
        self.assertEqual( ans.elements[5], 2701 )
        self.assertEqual( ans.elements[6], 520 )
        self.assertEqual( ans.elements[7], 1569 )
        self.assertEqual( ans.elements[8], 2925 )
Beispiel #2
0
    def test_identity( self ):

        b = THREE.Matrix4().set( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 )
        self.assertEqual( b.elements[0], 0 )
        self.assertEqual( b.elements[1], 4 )
        self.assertEqual( b.elements[2], 8 )
        self.assertEqual( b.elements[3], 12 )
        self.assertEqual( b.elements[4], 1 )
        self.assertEqual( b.elements[5], 5 )
        self.assertEqual( b.elements[6], 9 )
        self.assertEqual( b.elements[7], 13 )
        self.assertEqual( b.elements[8], 2 )
        self.assertEqual( b.elements[9], 6 )
        self.assertEqual( b.elements[10], 10 )
        self.assertEqual( b.elements[11], 14 )
        self.assertEqual( b.elements[12], 3 )
        self.assertEqual( b.elements[13], 7 )
        self.assertEqual( b.elements[14], 11 )
        self.assertEqual( b.elements[15], 15 )

        a = THREE.Matrix4()
        self.assertNotEqual( a, b )

        b.identity()
        self.assertEqual( a, b )
Beispiel #3
0
    def test_rotateX_Y_Z(self):

        geometry = THREE.BufferGeometry()
        geometry.addAttribute(
            "position",
            THREE.BufferAttribute(ctypesArray("f", [1, 2, 3, 4, 5, 6]), 3))

        pos = geometry.attributes["position"].array

        geometry.rotateX(180 * DegToRad)

        # object was rotated around x so all items should be flipped but the x ones
        self.assertTrue( pos[0] == 1 and pos[1] == -2 and pos[2] == -3 and \
                         pos[3] == 4 and pos[4] == -5 and pos[5] == -6 ) # vertices were rotated around x by 180 degrees

        geometry.rotateY(180 * DegToRad)

        # vertices were rotated around y so all items should be flipped again but the y ones
        self.assertTrue( pos[0] == -1 and pos[1] == -2 and pos[2] == 3 and \
                         pos[3] == -4 and pos[4] == -5 and pos[5] == 6 ) # vertices were rotated around y by 180 degrees

        geometry.rotateZ(180 * DegToRad)

        # vertices were rotated around z so all items should be flipped again but the z ones
        self.assertTrue( pos[0] == 1 and pos[1] == 2 and pos[2] == 3 and \
                         pos[3] == 4 and pos[4] == 5 and pos[5] == 6 ) # vertices were rotated around z by 180 degrees
Beispiel #4
0
    def test_coplanarPoint( self ):

        a = THREE.Plane( THREE.Vector3( 1, 0, 0 ), 0 )
        self.assertEqual( a.distanceToPoint( a.coplanarPoint() ), 0 ) # Passednot

        a = THREE.Plane( THREE.Vector3( 0, 1, 0 ), -1 )
        self.assertEqual( a.distanceToPoint( a.coplanarPoint() ), 0 ) # Passednot
Beispiel #5
0
    def test_multiply_divide(self):

        a = THREE.Vector4(x, y, z, w)
        b = THREE.Vector4(-x, -y, -z, -w)

        a.multiplyScalar(-2)
        self.assertEqual(a.x, x * -2)
        self.assertEqual(a.y, y * -2)
        self.assertEqual(a.z, z * -2)
        self.assertEqual(a.w, w * -2)

        b.multiplyScalar(-2)
        self.assertEqual(b.x, 2 * x)
        self.assertEqual(b.y, 2 * y)
        self.assertEqual(b.z, 2 * z)
        self.assertEqual(b.w, 2 * w)

        a.divideScalar(-2)
        self.assertEqual(a.x, x)
        self.assertEqual(a.y, y)
        self.assertEqual(a.z, z)
        self.assertEqual(a.w, w)

        b.divideScalar(-2)
        self.assertEqual(b.x, -x)
        self.assertEqual(b.y, -y)
        self.assertEqual(b.z, -z)
        self.assertEqual(b.w, -w)
Beispiel #6
0
    def test_distanceToPoint( self ):

        a = THREE.Plane( THREE.Vector3( 2, 0, 0 ), -2 )

        a.normalize()
        self.assertEqual( a.distanceToPoint( a.projectPoint( zero3.clone() ) ), 0 ) # Passednot
        self.assertEqual( a.distanceToPoint( THREE.Vector3( 4, 0, 0 ) ), 3 ) # Passednot
Beispiel #7
0
    def test_at( self ):

        a = THREE.Ray( one3.clone(), THREE.Vector3( 0, 0, 1 ) )

        self.assertTrue( a.at( 0 ).equals( one3 ) ) # Passednot
        self.assertTrue( a.at( -1 ).equals( THREE.Vector3( 1, 1, 0 ) ) ) # Passednot
        self.assertTrue( a.at( 1 ).equals( THREE.Vector3( 1, 1, 2 ) ) ) # Passednot
Beispiel #8
0
    def test_clone(self):

        instance = THREE.Face3(0, 1, 2, THREE.Vector3(0, 1, 0),
                               THREE.Color(0.25, 0.5, 0.75), 2)
        copiedInstance = instance.clone()

        self.checkCopy(copiedInstance)
        self.checkVertexAndColors(copiedInstance)
Beispiel #9
0
    def test_normalize( self ):

        a = THREE.Plane( THREE.Vector3( 2, 0, 0 ), 2 )

        a.normalize()
        self.assertEqual( a.normal.length(), 1 ) # Passednot
        self.assertTrue( a.normal.equals( THREE.Vector3( 1, 0, 0 ) ) ) # Passednot
        self.assertEqual( a.constant, 1 ) # Passednot
Beispiel #10
0
    def test_copyHex(self):

        c = THREE.Color()
        c2 = THREE.Color(0xF5FFFA)
        c.copy(c2)
        self.assertEqual(
            c.getHex(),
            c2.getHex())  # "Hex c: " + c.getHex() + " Hex c2: " + c2.getHex()
Beispiel #11
0
    def test_applyMatrix4(self):

        a = THREE.Sphere(one3.clone(), 1)

        m = THREE.Matrix4().makeTranslation(1, -2, 1)

        self.assertTrue(a.clone().applyMatrix4(m).getBoundingBox().equals(
            a.getBoundingBox().applyMatrix4(m)))  # Passednot
Beispiel #12
0
    def test_getSize(self):

        a = THREE.Box3(zero3.clone(), zero3.clone())

        self.assertTrue(a.getSize().equals(zero3))  # Passednot

        a = THREE.Box3(zero3.clone(), one3.clone())
        self.assertTrue(a.getSize().equals(one3))  # Passednot
Beispiel #13
0
    def test_intersectsSphere(self):

        a = THREE.Sphere(one3.clone(), 1)
        b = THREE.Sphere(zero3.clone(), 1)
        c = THREE.Sphere(zero3.clone(), 0.25)

        self.assertTrue(a.intersectsSphere(b))  # Passednot
        self.assertTrue(not a.intersectsSphere(c))  # Passednot
Beispiel #14
0
    def test_getSize(self):

        a = THREE.Box2(zero2.clone(), zero2.clone())

        self.assertTrue(a.getSize().equals(zero2))  # Passednot

        a = THREE.Box2(zero2.clone(), one2.clone())
        self.assertTrue(a.getSize().equals(one2))  # Passednot
Beispiel #15
0
    def test_copyColorString(self):

        c = THREE.Color()
        c2 = THREE.Color("ivory")
        c.copy(c2)
        self.assertEqual(
            c.getHex(),
            c2.getHex())  # "Hex c: " + c.getHex() + " Hex c2: " + c2.getHex()
Beispiel #16
0
    def test_constructor_equals( self ):

        a = THREE.Ray()
        self.assertTrue( a.origin.equals( zero3 ) ) # Passednot
        self.assertTrue( a.direction.equals( zero3 ) ) # Passednot

        a = THREE.Ray( two3.clone(), one3.clone() )
        self.assertTrue( a.origin.equals( two3 ) ) # Passednot
        self.assertTrue( a.direction.equals( one3 ) ) # Passednot
Beispiel #17
0
    def getBSForVertices(self, vertices):

        geometry = THREE.BufferGeometry()

        geometry.addAttribute(
            "position", THREE.BufferAttribute(ctypesArray("f", vertices), 3))
        geometry.computeBoundingSphere()

        return geometry.boundingSphere
Beispiel #18
0
    def test_lerp(self):

        c = THREE.Color()
        c2 = THREE.Color()
        c.setRGB(0, 0, 0)
        c.lerp(c2, 0.2)
        self.assertEqual(c.r, 0.2)  # "Red: " + c.r
        self.assertEqual(c.g, 0.2)  # "Green: " + c.g
        self.assertEqual(c.b, 0.2)  # "Blue: " + c.b
Beispiel #19
0
    def test_constructor(self):

        a = THREE.Vector2()
        self.assertEqual(a.x, 0)
        self.assertEqual(a.y, 0)

        a = THREE.Vector2(x, y)
        self.assertEqual(a.x, x)
        self.assertEqual(a.y, y)
Beispiel #20
0
    def test_copyLinearToGamma(self):

        c = THREE.Color()
        c2 = THREE.Color()
        c2.setRGB(0.09, 0.25, 0.81)
        c.copyLinearToGamma(c2)
        self.assertEqual(c.r, 0.3)  # "Red c: " + c.r + " Red c2: " + c2.r
        self.assertEqual(c.g, 0.5)  # "Green c: " + c.g + " Green c2: " + c2.g
        self.assertEqual(c.b, 0.9)  # "Blue c: " + c.b + " Blue c2: " + c2.b
Beispiel #21
0
    def test_constructor(self):

        a = THREE.Sphere()
        self.assertTrue(a.center.equals(zero3))  # Passednot
        self.assertEqual(a.radius, 0)  # Passednot

        a = THREE.Sphere(one3.clone(), 1)
        self.assertTrue(a.center.equals(one3))  # Passednot
        self.assertEqual(a.radius, 1)  # Passednot
Beispiel #22
0
    def test_constructor_equals(self):

        a = THREE.Line3()
        self.assertTrue(a.start.equals(zero3))  # Passednot
        self.assertTrue(a.end.equals(zero3))  # Passednot

        a = THREE.Line3(two3.clone(), one3.clone())
        self.assertTrue(a.start.equals(two3))  # Passednot
        self.assertTrue(a.end.equals(one3))  # Passednot
Beispiel #23
0
    def test_getCenter(self):

        a = THREE.Box3(zero3.clone(), zero3.clone())

        self.assertTrue(a.getCenter().equals(zero3))  # Passednot

        a = THREE.Box3(zero3.clone(), one3.clone())
        midpoint = one3.clone().multiplyScalar(0.5)
        self.assertTrue(a.getCenter().equals(midpoint))  # Passednot
Beispiel #24
0
    def test_intersectsSphere(self):

        a = THREE.Box3(zero3.clone(), one3.clone())
        b = THREE.Sphere(zero3.clone(), 1)

        self.assertTrue(a.intersectsSphere(b))  # Passednot

        b.translate(THREE.Vector3(2, 2, 2))
        self.assertTrue(not a.intersectsSphere(b))  # Passednot
Beispiel #25
0
    def test_copy( self ):

        a = THREE.Matrix3().set( 0, 1, 2, 3, 4, 5, 6, 7, 8 )
        b = THREE.Matrix3().copy( a )

        self.assertTrue( matrixEquals3( a, b ) ) # Passednot

        # ensure that it is a True copy
        a.elements[0] = 2
        self.assertTrue( not matrixEquals3( a, b ) ) # Passednot
Beispiel #26
0
    def test_copy( self ):

        a = THREE.Matrix4().set( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 )
        b = THREE.Matrix4().copy( a )

        self.assertEqual( a, b )

        # ensure that it is a True copy
        a.elements[0] = 2
        self.assertNotEqual( a, b )
Beispiel #27
0
    def test_dot(self):
        a = THREE.Vector4(x, y, z, w)
        b = THREE.Vector4(-x, -y, -z, -w)
        c = THREE.Vector4(0, 0, 0, 0)

        result = a.dot(b)
        self.assertEqual(result, -x * x - y * y - z * z - w * w)

        result = a.dot(c)
        self.assertEqual(result, 0)
Beispiel #28
0
    def test_union(self):

        a = THREE.Box3(zero3.clone(), zero3.clone())
        b = THREE.Box3(zero3.clone(), one3.clone())
        c = THREE.Box3(one3.clone().negate(), one3.clone())

        self.assertTrue(a.clone().union(a).equals(a))  # Passednot
        self.assertTrue(a.clone().union(b).equals(b))  # Passednot
        self.assertTrue(a.clone().union(c).equals(c))  # Passednot
        self.assertTrue(b.clone().union(c).equals(c))  # Passednot
Beispiel #29
0
    def test_clampPoint(self):

        a = THREE.Sphere(one3.clone(), 1)

        self.assertTrue(
            a.clampPoint(THREE.Vector3(1, 1, 3)).equals(THREE.Vector3(
                1, 1, 2)))  # Passednot
        self.assertTrue(
            a.clampPoint(THREE.Vector3(1, 1, -3)).equals(THREE.Vector3(
                1, 1, 0)))  # Passednot
Beispiel #30
0
    def test_getBoundingBox(self):

        a = THREE.Sphere(one3.clone(), 1)

        self.assertTrue(a.getBoundingBox().equals(THREE.Box3(
            zero3, two3)))  # Passednot

        a.set(zero3, 0)
        self.assertTrue(a.getBoundingBox().equals(THREE.Box3(
            zero3, zero3)))  # Passednot