示例#1
0
 def testInverse(self):
     # test verified with matlab
     # 1,0,0,0,0,0.4, -0.4, 0 ,0 , 0.1 , 0.4 0 ,0,0,0,1
     test = pyngl.Mat3(1, 0, 0, 0, 2, 2, 0, -0.5, 2)
     test = test.inverse()
     result = pyngl.Mat3(1.0, 0.0, 0.0, 0.0, 0.4, 0.1, 0.0, -0.4, 0.4)
     self.assertTrue(test == result)
示例#2
0
    def testSetUniform(self):
        # note how the API changes here to be more pythonic as
        # we have no pass by reference here
        shader = pyngl.ShaderLib.instance()
        shaderName = 'TestUniform'
        self.assertTrue(
            shader.loadShader(shaderName, sourcedir + 'testUniformVertex.glsl',
                              sourcedir + 'testUniformFragment.glsl',
                              pyngl.ErrorExit.OFF))
        shader.use(shaderName)
        shader.setUniform('testFloat', 2.25)
        result = shader.getUniform1f('testFloat')

        self.assertAlmostEqual(result, 2.25, delta=3)

        shader.setUniform("testVec2", 0.5, 2.0)
        resultVec2 = shader.getUniformVec2("testVec2")
        self.assertAlmostEqual(resultVec2.m_x, 0.5, delta=3)
        self.assertAlmostEqual(resultVec2.m_y, 2.0, delta=3)

        x, y = shader.getUniform2f("testVec2")
        self.assertAlmostEqual(resultVec2.m_x, 0.5, delta=3)
        self.assertAlmostEqual(resultVec2.m_y, 2.0, delta=3)

        shader.setUniform('testVec3', 0.5, 2.0, -22.2)
        resultF1, resultF2, resultF3 = shader.getUniform3f('testVec3')
        self.assertAlmostEqual(resultF1, 0.5, delta=3)
        self.assertAlmostEqual(resultF2, 2.0, delta=3)
        self.assertAlmostEqual(resultF3, -22.2, delta=3)
        resultVec3 = shader.getUniformVec3('testVec3')
        self.assertAlmostEqual(resultVec3.m_x, 0.5, delta=3)
        self.assertAlmostEqual(resultVec3.m_y, 2.0, delta=3)
        self.assertAlmostEqual(resultVec3.m_z, -22.2, delta=3)

        shader.setUniform('testVec4', 0.5, 2.0, -22.2, 1230.4)
        resultF1, resultF2, resultF3, resultF4 = shader.getUniform4f(
            'testVec4')
        self.assertAlmostEqual(resultF1, 0.5, delta=3)
        self.assertAlmostEqual(resultF2, 2.0, delta=3)
        self.assertAlmostEqual(resultF3, -22.2, delta=3)
        self.assertAlmostEqual(resultF4, 1230.4, delta=3)

        resultVec4 = shader.getUniformVec4('testVec4')
        self.assertAlmostEqual(resultVec4.m_x, 0.5, delta=3)
        self.assertAlmostEqual(resultVec4.m_y, 2.0, delta=3)
        self.assertAlmostEqual(resultVec4.m_z, -22.2, delta=3)
        self.assertAlmostEqual(resultVec4.m_w, 1230.4, delta=3)
        shader.setUniform('testMat2', pyngl.Mat2())
        result = shader.getUniformMat2('testMat2')
        self.assertTrue(result == pyngl.Mat2())

        shader.setUniform('testMat3', pyngl.Mat3())
        result = shader.getUniformMat3('testMat3')
        self.assertTrue(result == pyngl.Mat3())

        shader.setUniform('testMat4', pyngl.Mat4())
        result = shader.getUniformMat4('testMat4')
        self.assertTrue(result == pyngl.Mat4())
示例#3
0
 def testPlus(self):
     t1 = pyngl.Mat3()
     t2 = pyngl.Mat3()
     t1.rotateX(45.0)
     t2.rotateY(35.0)
     res = t1 + t2
     result = pyngl.Mat3(1.81915, 0, -0.573577, 0, 1.70711, 0.707107,
                         0.573577, -0.707107, 1.52626)
     self.assertTrue(res == result)
示例#4
0
 def testMat3xEquals(self):
     test = pyngl.Mat3()
     t2 = pyngl.Mat3()
     test.rotateX(45.0)
     t2.rotateY(35.0)
     test *= t2
     result = pyngl.Mat3(0.819152, 0.40558, -0.40558, 0, 0.707107, 0.707107,
                         0.573577, -0.579228, 0.579228)
     self.assertTrue(test == result)
示例#5
0
 def testMat3xEquals2(self):
     test = pyngl.Mat3()
     t2 = pyngl.Mat3()
     test.rotateX(45.0)
     t2.rotateY(35.0)
     test *= t2
     r = pyngl.Mat3()
     r.rotateX(45.0)
     self.assertTrue(test == (t2 * r))
示例#6
0
 def testSetAt(self):
     test = pyngl.Mat3()
     value = 0.0
     for y in range(0, 3):
         for x in range(0, 3):
             test.setAtXY(x, y, value)
             value += 1.0
     result = pyngl.Mat3(0, 3, 6, 1, 4, 7, 2, 5, 8)
     self.assertTrue(test == result)
示例#7
0
 def testMat3xMat3(self):
     t1 = pyngl.Mat3()
     t2 = pyngl.Mat3()
     t1.rotateX(45.0)
     t2.rotateY(35.0)
     test = t1 * t2
     result = pyngl.Mat3(0.819152, 0, -0.573577, 0.40558, 0.707107,
                         0.579228, 0.40558, -0.707107, 0.579228)
     self.assertTrue(test == result)
示例#8
0
 def testMat3xReal(self):
     test = pyngl.Mat3()
     value = 0.0
     for y in range(0, 3):
         for x in range(0, 3):
             test.setAtXY(x, y, value)
             value += 1.0
     test *= 4.2
     result = pyngl.Mat3(0, 12.599999427795, 25.199998855591,
                         4.199999809265, 16.799999237061, 29.399997711182,
                         8.399999618530, 21.000000000000, 33.599998474121)
     self.assertTrue(test == result)
示例#9
0
 def testVec3xMat3(self):
     t1 = pyngl.Mat3()
     t1.rotateX(45.0)
     test = pyngl.Vec3(2, 1, 2)
     test = test * t1
     result = pyngl.Vec3(2, -0.707107, 2.12132)
     self.assertTrue(test == result)
示例#10
0
 def testCopyCtor(self):
     test = pyngl.Mat3(2.0)
     copy = pyngl.Mat3(test)
     result = pyngl.Mat3(2, 0, 0, 0, 2, 0, 0, 0, 2)
     self.assertTrue(copy == result)
示例#11
0
 def testrotateZ(self):
     test = pyngl.Mat3()
     test.rotateZ(-36.0)
     result = pyngl.Mat3(0.809017, -0.587785, 0, 0.587785, 0.809017, 0, 0,
                         0, 1)
     self.assertTrue(test == result)
示例#12
0
 def testrotateY(self):
     test = pyngl.Mat3()
     test.rotateY(25.0)
     result = pyngl.Mat3(0.906308, 0, -0.422618, 0, 1, 0, 0.422618, 0,
                         0.906308)
     self.assertTrue(test == result)
示例#13
0
 def testrotateX(self):
     test = pyngl.Mat3()
     test.rotateX(45.0)
     result = pyngl.Mat3(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107,
                         0.707107)
     self.assertTrue(test == result)
示例#14
0
 def testScale(self):
     test = pyngl.Mat3()
     test.scale(1.0, 2.0, 3.0)
     result = pyngl.Mat3(1, 0, 0, 0, 2, 0, 0, 0, 3)
     self.assertTrue(test == result)
示例#15
0
 def testTranspose(self):
     test = pyngl.Mat3(1, 2, 3, 4, 5, 6, 7, 8, 9)
     test.transpose()
     result = pyngl.Mat3(1, 4, 7, 2, 5, 8, 3, 6, 9)
     self.assertTrue(test == result)
示例#16
0
 def testdefaultCtor(self):
     test = pyngl.Mat3()
     result = pyngl.Mat3(1, 0, 0, 0, 1, 0, 0, 0, 1)
     self.assertTrue(test == result)
示例#17
0
 def testDeterminant(self):
     test = pyngl.Mat3(1, 0, 0, 0, 2, 2, 0, -0.5, 2)
     det = test.determinant()
     self.assertEqual(det, 5.0)
示例#18
0
 def testOuter(self):
     a = pyngl.Vec3(1.0, 2.0, 3.0)
     b = pyngl.Vec3(3.0, 4.0, 5.0)
     outer = a.outer(b)
     result = pyngl.Mat3(3, 4, 5, 6, 8, 10, 9, 12, 15)
     self.assertTrue(outer == result)
示例#19
0
 def testNull(self):
     test = pyngl.Mat3()
     test.null()
     result = pyngl.Mat3(0, 0, 0, 0, 0, 0, 0, 0, 0)
     self.assertTrue(test == result)
示例#20
0
 def testFloatCtor(self):
     test = pyngl.Mat3(2.0)
     result = pyngl.Mat3(2, 0, 0, 0, 2, 0, 0, 0, 2)
     self.assertTrue(test == result)
示例#21
0
 def testIdentity(self):
     test = pyngl.Mat3(1, 2, 3, 4, 5, 6, 7, 8, 9)
     test.identity()
     result = pyngl.Mat3(1, 0, 0, 0, 1, 0, 0, 0, 1)
     self.assertTrue(test == result)
示例#22
0
 def testAssignOperator(self):
     test = pyngl.Mat3(2.0)
     copy = test
     result = pyngl.Mat3(2, 0, 0, 0, 2, 0, 0, 0, 2)
     self.assertTrue(copy == result)
示例#23
0
 def testSizeof(self):
     test = pyngl.Mat3()
     self.assertTrue(test.sizeof() == 9 * ctypes.sizeof(ctypes.c_float))