def testDivideEqualVec(self): a = pyngl.Vec3(1.0, 2.0, 3.0) b = pyngl.Vec3(2.0, 2.0, 2.0) a /= b self.assertAlmostEquals(a.m_x, 0.5, delta=0.001) self.assertAlmostEquals(a.m_y, 1.0, delta=0.001) self.assertAlmostEquals(a.m_z, 1.5, delta=0.001)
def testAddEqual(self): a = pyngl.Vec3(1.0, 2.0, 3.0) b = pyngl.Vec3(4.0, 5.0, 6.0) a += b self.assertAlmostEquals(a.m_x, 5.0, delta=0.001) self.assertAlmostEquals(a.m_y, 7.0, delta=0.001) self.assertAlmostEquals(a.m_z, 9.0, delta=0.001)
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)
def testMinusEqual(self): a = pyngl.Vec3(1.0, 2.0, 3.0) b = pyngl.Vec3(4.0, 5.0, 6.0) a -= b self.assertAlmostEquals(a.m_x, -3.0, delta=0.001) self.assertAlmostEquals(a.m_y, -3.0, delta=0.001) self.assertAlmostEquals(a.m_z, -3.0, delta=0.001)
def testCheckUV(self): a = pyngl.Obj() self.assertTrue(a.load(sourcedir + 'Triangle1.obj')) uv = a.getUVList() self.assertTrue(uv[0] == pyngl.Vec3(1.00000, 0.00000, 0.000000)) self.assertTrue(uv[1] == pyngl.Vec3(0.5000, 1.0000, 0.000000)) self.assertTrue(uv[2] == pyngl.Vec3(0.004399, 0.008916, 0.00000))
def testLookAt(self): lookNGL = pyngl.lookAt(pyngl.Vec3(2.0, 2.0, 2.0), pyngl.Vec3(0, 0, 0), pyngl.Vec3(0, 1.0, 0)) lookGLM = glm.lookAt(glm.vec3(2.0, 2.0, 2.0), glm.vec3(0.0, 0.0, 0.0), glm.vec3(0.0, 1.0, 0.0)) self.assertTrue(self.glmToNGL(lookGLM) == lookNGL)
def testCheckVerts(self): a = pyngl.Obj() self.assertTrue(a.load(sourcedir + 'Triangle1.obj')) verts = a.getVertexList() self.assertTrue(verts[0] == pyngl.Vec3(2.0, 0.0, 0.0)) self.assertTrue(verts[1] == pyngl.Vec3(0.0, 4.0, 0.0)) self.assertTrue(verts[2] == pyngl.Vec3(-2.0, 0.0, 0.0))
def testCheckNormals(self): a = pyngl.Obj() self.assertTrue(a.load(sourcedir + 'Triangle1.obj')) normal = a.getNormalList() self.assertTrue(normal[0] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(normal[1] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(normal[2] == pyngl.Vec3(0.0, 0.0, 1.0))
def testSaveVertsUV(self): a = pyngl.Obj() a.addVertex(pyngl.Vec3(2.00000, 0.00000, 0.000000)) a.addVertex(pyngl.Vec3(0.0000, 4.0000, 0.000000)) a.addVertex(pyngl.Vec3(-2.00000, 0.000000, 0.00000)) a.addUV(pyngl.Vec2(1.0, 0.0)) a.addUV(pyngl.Vec2(0.5, 1.0)) a.addUV(pyngl.Vec2(0.004399, 0.008916)) f = pyngl.Face() f.m_vert.append(0) f.m_vert.append(1) f.m_vert.append(2) f.m_uv.append(0) f.m_uv.append(1) f.m_uv.append(2) a.addFace(f) a.save('faceUV.obj') b = pyngl.Obj('faceUV.obj') face = b.getFaceList() self.assertEqual(face[0].m_vert[0], 0) self.assertEqual(face[0].m_vert[1], 1) self.assertEqual(face[0].m_vert[2], 2) verts = b.getVertexList() self.assertTrue(verts[0] == pyngl.Vec3(2.0, 0.0, 0.0)) self.assertTrue(verts[1] == pyngl.Vec3(0.0, 4.0, 0.0)) self.assertTrue(verts[2] == pyngl.Vec3(-2.0, 0.0, 0.0)) uv = b.getUVList() self.assertTrue(uv[0] == pyngl.Vec3(1.0, 0.0, 0.0)) self.assertTrue(uv[1] == pyngl.Vec3(0.5, 1.0, 0.0)) self.assertTrue(uv[2] == pyngl.Vec3(0.004399, 0.008916, 0.0)) os.remove('faceUV.obj')
def testAddVertex(self): a = pyngl.Obj() v = 0.0 for i in range(0, 20): a.addVertex(pyngl.Vec3(v, v, v)) v = v + 1.0 verts = a.getVertexList() v = 0.0 for i in range(0, 20): self.assertTrue(verts[i] == pyngl.Vec3(v, v, v)) v += 1.0
def testAddNormal(self): a = pyngl.Obj() v = 0.0 for i in range(0, 20): a.addNormal(pyngl.Vec3(v, v, v)) v = v + 1.0 norm = a.getNormalList() v = 0.0 for i in range(0, 20): self.assertTrue(norm[i] == pyngl.Vec3(v, v, v)) v += 1.0
def testAddUV3(self): a = pyngl.Obj() v = 0.0 for i in range(0, 20): a.addUV(pyngl.Vec3(v, v, v)) v = v + 1.0 uv = a.getUVList() v = 0.0 for i in range(0, 20): self.assertTrue(uv[i] == pyngl.Vec3(v, v, v)) v += 1.0
def testCross2(self): a = pyngl.Vec3.up() b = pyngl.Vec3.left() c = pyngl.Vec3() c.cross(a, b) # alas in is a reserved work in python so we use inV self.assertTrue(c == pyngl.Vec3.inV())
def testBuildObj(self): a = self.buildObj() face = a.getFaceList() self.assertEqual(face[0].m_vert[0], 0) self.assertEqual(face[0].m_vert[1], 1) self.assertEqual(face[0].m_vert[2], 2) self.assertEqual(face[0].m_norm[0], 0) self.assertEqual(face[0].m_norm[1], 1) self.assertEqual(face[0].m_norm[2], 2) self.assertEqual(face[0].m_uv[0], 0) self.assertEqual(face[0].m_uv[1], 1) self.assertEqual(face[0].m_uv[2], 2) verts = a.getVertexList() self.assertTrue(verts[0] == pyngl.Vec3(2.00000, 0.00000, 0.000000)) self.assertTrue(verts[1] == pyngl.Vec3(0.0000, 4.0000, 0.000000)) self.assertTrue(verts[2] == pyngl.Vec3(-2.00000, 0.000000, 0.000000)) norm = a.getNormalList() self.assertTrue(norm[0] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(norm[1] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(norm[2] == pyngl.Vec3(0.0, 0.0, 1.0)) uv = a.getUVList() self.assertTrue(uv[0] == pyngl.Vec3(1.0, 0.0, 0.0)) self.assertTrue(uv[1] == pyngl.Vec3(0.5, 1.0, 0.0)) self.assertTrue(uv[2] == pyngl.Vec3(0.004399, 0.008916, 0.0))
def testSaveVertsOnly(self): a = pyngl.Obj() a.addVertex(pyngl.Vec3(2.00000, 0.00000, 0.000000)) a.addVertex(pyngl.Vec3(0.0000, 4.0000, 0.000000)) a.addVertex(pyngl.Vec3(-2.00000, 0.000000, 0.00000)) f = pyngl.Face() f.m_vert.append(0) f.m_vert.append(1) f.m_vert.append(2) a.addFace(f) a.save('faceOnly.obj') b = pyngl.Obj('faceOnly.obj') face = b.getFaceList() self.assertEqual(face[0].m_vert[0], 0) self.assertEqual(face[0].m_vert[1], 1) self.assertEqual(face[0].m_vert[2], 2) verts = b.getVertexList() self.assertTrue(verts[0] == pyngl.Vec3(2.0, 0.0, 0.0)) self.assertTrue(verts[1] == pyngl.Vec3(0.0, 4.0, 0.0)) self.assertTrue(verts[2] == pyngl.Vec3(-2.0, 0.0, 0.0)) os.remove('faceOnly.obj')
def buildObj(self): a = pyngl.Obj() a.addVertex(pyngl.Vec3(2.00000, 0.00000, 0.000000)) a.addVertex(pyngl.Vec3(0.0000, 4.0000, 0.000000)) a.addVertex(pyngl.Vec3(-2.00000, 0.000000, 0.000000)) a.addUV(pyngl.Vec2(1.000000, 0.000000)) a.addUV(pyngl.Vec2(0.500000, 1.000000)) a.addUV(pyngl.Vec2(0.004399, 0.008916)) a.addNormal(pyngl.Vec3(0.000000, 0.000000, 1.000000)) a.addNormal(pyngl.Vec3(0.000000, 0.000000, 1.000000)) a.addNormal(pyngl.Vec3(0.000000, 0.000000, 1.000000)) f = pyngl.Face() # f 1/1/1 2/2/2 3/3/3 f.m_vert.append(0) f.m_vert.append(1) f.m_vert.append(2) f.m_uv.append(0) f.m_uv.append(1) f.m_uv.append(2) f.m_norm.append(0) f.m_norm.append(1) f.m_norm.append(2) a.addFace(f) return a
def saveVertsNormal(self): a = pyngl.Obj() a.addVertex(pyngl.Vec3(2.00000, 0.00000, 0.000000)) a.addVertex(pyngl.Vec3(0.0000, 4.0000, 0.000000)) a.addVertex(pyngl.Vec3(-2.00000, 0.000000, 0.00000)) a.addNormal(pyngl.Vec3(0.0, 0.0, 1.0)) a.addNormal(pyngl.Vec3(0.0, 0.0, 1.0)) a.addNormal(pyngl.Vec3(0.0, 0.0, 1.0)) f = pyngl.Face() f.m_vert.append(0) f.m_vert.append(1) f.m_vert.append(2) f.m_norm.append(0) f.m_norm.append(1) f.m_norm.append(2) a.addFace(f) a.save('faceVertNormal.obj') b = pyngl.Obj('faceVertNormal.obj') face = b.getFaceList() self.assertEqual(face[0].m_vert[0], 0) self.assertEqual(face[0].m_vert[1], 1) self.assertEqual(face[0].m_vert[2], 2) verts = b.getVertexList() self.assertTrue(verts[0] == pyngl.Vec3(2.0, 0.0, 0.0)) self.assertTrue(verts[1] == pyngl.Vec3(0.0, 4.0, 0.0)) self.assertTrue(verts[2] == pyngl.Vec3(-2.0, 0.0, 0.0)) norm = b.getUVList() self.assertTrue(norm[0] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(norm[1] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(norm[2] == pyngl.Vec3(0.0, 0.0, 1.0)) os.remove('faceVertNormal.obj')
def testLength(self): a = pyngl.Vec3(22.0, 1.0, 32.0) self.assertAlmostEqual(a.length(), 38.845, delta=0.001)
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)
def testCopyCtor(self): a = pyngl.Obj() a.addVertex(pyngl.Vec3(2.00000, 0.00000, 0.000000)) a.addVertex(pyngl.Vec3(0.0000, 4.0000, 0.000000)) a.addVertex(pyngl.Vec3(-2.00000, 0.000000, 0.00000)) a.addNormal(pyngl.Vec3(0.0, 0.0, 1.0)) a.addNormal(pyngl.Vec3(0.0, 0.0, 1.0)) a.addNormal(pyngl.Vec3(0.0, 0.0, 1.0)) a.addUV(pyngl.Vec2(1.0, 0.0)) a.addUV(pyngl.Vec2(0.5, 1.0)) a.addUV(pyngl.Vec2(0.004399, 0.008916)) f = pyngl.Face() f.m_vert.append(0) f.m_vert.append(1) f.m_vert.append(2) f.m_norm.append(0) f.m_norm.append(1) f.m_norm.append(2) f.m_uv.append(0) f.m_uv.append(1) f.m_uv.append(2) a.addFace(f) b = a face = b.getFaceList() self.assertEqual(face[0].m_vert[0], 0) self.assertEqual(face[0].m_vert[1], 1) self.assertEqual(face[0].m_vert[2], 2) verts = b.getVertexList() self.assertTrue(verts[0] == pyngl.Vec3(2.0, 0.0, 0.0)) self.assertTrue(verts[1] == pyngl.Vec3(0.0, 4.0, 0.0)) self.assertTrue(verts[2] == pyngl.Vec3(-2.0, 0.0, 0.0)) norm = b.getNormalList() self.assertTrue(norm[0] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(norm[1] == pyngl.Vec3(0.0, 0.0, 1.0)) self.assertTrue(norm[2] == pyngl.Vec3(0.0, 0.0, 1.0)) uv = b.getUVList() self.assertTrue(uv[0] == pyngl.Vec3(1.0, 0.0, 0.0)) self.assertTrue(uv[1] == pyngl.Vec3(0.5, 1.0, 0.0)) self.assertTrue(uv[2] == pyngl.Vec3(0.004399, 0.008916, 0.0))
def testAssignOperator(self): test = pyngl.Vec3(1.0, 2.0, 3.0) copy = test result = pyngl.Vec3(1.0, 2.0, 3.0) self.assertEqual(test, result)
def testFloatCtor(self): test = pyngl.Vec3(1.0, 2.0, 3.0) result = pyngl.Vec3(1.0, 2.0, 3.0) self.assertEqual(test, result)
def testSubscipt(self): test = pyngl.Vec3(1, 2, 3) self.assertAlmostEqual(test[0], 1.0) self.assertAlmostEqual(test[1], 2.0) self.assertAlmostEqual(test[2], 3.0)
def testLengthSquared(self): a = pyngl.Vec3(22.0, 1.0, 32.0) self.assertAlmostEqual(a.lengthSquared(), 1509.0, delta=0.001)
def testNormalize(self): test = pyngl.Vec3(22.3, 0.5, 10.0) test.normalize() result = pyngl.Vec3(0.912266, 0.0204544, 0.409088) self.assertTrue(test == result) self.assertEqual(test, result)
def testInner(self): a = pyngl.Vec3(1, 2, 3) b = pyngl.Vec3(3, 4, 5) self.assertEqual(a.inner(b), 26.0)
def testDotProduct(self): a = pyngl.Vec3(1.0, 2.0, 3.0) b = pyngl.Vec3(4.0, 5.0, 6.0) self.assertEqual(a.dot(b), 32.0)
def testNull(self): test = pyngl.Vec3(1, 2, 4) test.null() self.assertTrue(test == pyngl.Vec3.zero())
def testCalcNormal2(self): result = pyngl.calcNormal(pyngl.Vec4(-1.0, -1.0, 0.0, 0.0), pyngl.Vec4(0.0, 0.0, 0.0, 0.0), pyngl.Vec4(1.0, -1.0, 0.0, 0.0)) self.assertEqual(result, pyngl.Vec3(0.0, 0.0, 1.0))
def testSizeof(self): test = pyngl.Vec3() self.assertTrue(test.sizeof() == 3 * ctypes.sizeof(ctypes.c_float))