def testEulerAdapter(self): """Check the EulerAdapter component.""" ea = EulerAdapter(anglex=40, angley=20, anglez=10, order="xyz", auto_insert=False) self.assertEqual(ea.output, mat3.fromEulerXYZ(radians(40), radians(20), radians(10))) ea.anglex = 0 ea.angley = 10 ea.anglez = 20 self.assertEqual(ea.output, mat3.fromEulerXYZ(0, radians(10), radians(20)))
def testEulerAdapter(self): """Check the EulerAdapter component.""" ea = EulerAdapter(anglex=40, angley=20, anglez=10, order="xyz", auto_insert=False) self.assertEqual( ea.output, mat3.fromEulerXYZ(radians(40), radians(20), radians(10))) ea.anglex = 0 ea.angley = 10 ea.anglez = 20 self.assertEqual(ea.output, mat3.fromEulerXYZ(0, radians(10), radians(20)))
def load3dsTextureMap(self,tm): if tm != None: self.name = tm.name self.set = True self.scale = tm.scale self.offset = tm.offset self.rotation = radians(tm.rotation) self.percent = tm.percent
def load3dsTextureMap(self, tm): if tm != None: self.name = tm.name self.set = True self.scale = tm.scale self.offset = tm.offset self.rotation = radians(tm.rotation) self.percent = tm.percent
def testMath(self): """Test the math functions. """ self.assertEqual(math.pi, sl.PI) self.assertEqual(0.3, sl.abs(-0.3)) self.assertEqual(math.acos(0.2), sl.acos(0.2)) self.assertEqual(math.asin(0.2), sl.asin(0.2)) self.assertEqual(math.atan(0.2), sl.atan(0.2)) self.assertEqual(math.atan2(0.2, 0.5), sl.atan(0.2, 0.5)) self.assertEqual(2, sl.ceil(1.3)) self.assertEqual(0.3, sl.clamp(0.3, 0.0, 1.0)) self.assertEqual(0.0, sl.clamp(-0.1, 0.0, 1.0)) self.assertEqual(1.0, sl.clamp(1.5, 0.0, 1.0)) self.assertEqual(math.cos(0.2), sl.cos(0.2)) self.assertEqual(math.exp(0.2), sl.exp(0.2)) self.assertEqual(math.degrees(0.3), sl.degrees(0.3)) self.assertEqual(1.0, sl.floor(1.8)) self.assertEqual(1.0 / math.sqrt(5), sl.inversesqrt(5)) self.assertEqual(math.log(8), sl.log(8)) self.assertEqual(math.log(8, 2), sl.log(8, 2)) self.assertEqual(5, sl.max(1, 5, 3)) self.assertEqual(1, sl.min(1, 5, 3)) self.assertEqual(0.5, sl.mix(0.0, 1.0, 0.5)) self.assertEqual(0.5, sl.mod(2.5, 1)) self.assertEqual(16, sl.pow(4, 2)) self.assertEqual(math.radians(45), sl.radians(45)) self.assertEqual(2.0, sl.round(2.4)) self.assertEqual(-1, sl.sign(-18)) self.assertEqual(1, sl.sign(18)) self.assertEqual(0, sl.sign(0)) self.assertEqual(math.sin(0.2), sl.sin(0.2)) self.assertEqual(0.5, sl.smoothstep(0.0, 1.0, 0.5)) self.assertEqual(0.5, sl.spline(0.5, [0.0, 0.0, 1.0, 1.0])) self.assertEqual(4, sl.sqrt(16)) self.assertEqual(0, sl.step(1.0, 0.5)) self.assertEqual(1, sl.step(1.0, 1.5)) self.assertEqual(math.tan(0.2), sl.tan(0.2)) # For now, just make sure the functions can be called sl.color_cellnoise(0.3, 0.2) sl.color_noise(0.1, 0.3) sl.color_pnoise(0.1, 0.3, 2, 2) sl.color_random() sl.float_cellnoise(0.3, 0.2) sl.float_noise(0.1, 0.3) sl.float_pnoise(0.1, 0.3, 2, 2) sl.float_random() sl.point_cellnoise(0.3, 0.2) sl.point_noise(0.1, 0.3) sl.point_pnoise(0.1, 0.3, 2, 2) sl.point_random() sl.vector_cellnoise(0.3, 0.2) sl.vector_noise(0.1, 0.3) sl.vector_pnoise(0.1, 0.3, 2, 2)
def testMath(self): """Test the math functions. """ self.assertEqual(math.pi, sl.PI) self.assertEqual(0.3, sl.abs(-0.3)) self.assertEqual(math.acos(0.2), sl.acos(0.2)) self.assertEqual(math.asin(0.2), sl.asin(0.2)) self.assertEqual(math.atan(0.2), sl.atan(0.2)) self.assertEqual(math.atan2(0.2, 0.5), sl.atan(0.2, 0.5)) self.assertEqual(2, sl.ceil(1.3)) self.assertEqual(0.3, sl.clamp(0.3, 0.0, 1.0)) self.assertEqual(0.0, sl.clamp(-0.1, 0.0, 1.0)) self.assertEqual(1.0, sl.clamp(1.5, 0.0, 1.0)) self.assertEqual(math.cos(0.2), sl.cos(0.2)) self.assertEqual(math.exp(0.2), sl.exp(0.2)) self.assertEqual(math.degrees(0.3), sl.degrees(0.3)) self.assertEqual(1.0, sl.floor(1.8)) self.assertEqual(1.0/math.sqrt(5), sl.inversesqrt(5)) self.assertEqual(math.log(8), sl.log(8)) self.assertEqual(math.log(8, 2), sl.log(8, 2)) self.assertEqual(5, sl.max(1, 5, 3)) self.assertEqual(1, sl.min(1, 5, 3)) self.assertEqual(0.5, sl.mix(0.0, 1.0, 0.5)) self.assertEqual(0.5, sl.mod(2.5, 1)) self.assertEqual(16, sl.pow(4, 2)) self.assertEqual(math.radians(45), sl.radians(45)) self.assertEqual(2.0, sl.round(2.4)) self.assertEqual(-1, sl.sign(-18)) self.assertEqual(1, sl.sign(18)) self.assertEqual(0, sl.sign(0)) self.assertEqual(math.sin(0.2), sl.sin(0.2)) self.assertEqual(0.5, sl.smoothstep(0.0, 1.0, 0.5)) self.assertEqual(0.5, sl.spline(0.5, [0.0, 0.0, 1.0, 1.0])) self.assertEqual(4, sl.sqrt(16)) self.assertEqual(0, sl.step(1.0, 0.5)) self.assertEqual(1, sl.step(1.0, 1.5)) self.assertEqual(math.tan(0.2), sl.tan(0.2)) # For now, just make sure the functions can be called sl.color_cellnoise(0.3,0.2) sl.color_noise(0.1,0.3) sl.color_pnoise(0.1,0.3, 2, 2) sl.color_random() sl.float_cellnoise(0.3,0.2) sl.float_noise(0.1,0.3) sl.float_pnoise(0.1,0.3, 2, 2) sl.float_random() sl.point_cellnoise(0.3,0.2) sl.point_noise(0.1,0.3) sl.point_pnoise(0.1,0.3, 2, 2) sl.point_random() sl.vector_cellnoise(0.3,0.2) sl.vector_noise(0.1,0.3) sl.vector_pnoise(0.1,0.3, 2, 2)
def testEuler(self): """Test the fromEuler*() and toEuler*() methods. The result from an fromEuler*() method is compared to an equivalent matrix that is composed by 3 individual rotations. """ angles = [{"X":radians(20), "Y":radians(30), "Z":radians(40)}, {"X":radians(0), "Y":radians(0), "Z":radians(0)}, {"X":radians(350), "Y":radians(0), "Z":radians(0)}, {"X":radians(0), "Y":radians(350), "Z":radians(0)}, {"X":radians(0), "Y":radians(0), "Z":radians(350)},] axis = {"X":vec3(1,0,0), "Y":vec3(0,1,0), "Z":vec3(0,0,1)} for order in ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"]: for angle in angles: R1 = mat3.rotation(angle[order[0]], axis[order[0]]) R2 = mat3.rotation(angle[order[1]], axis[order[1]]) R3 = mat3.rotation(angle[order[2]], axis[order[2]]) # Each rotation is about the *global* axis, so these rotations # have to be applied just in the opposite order than mentioned # in the fromEuler*() method name. C = R1*R2*R3 ns = {"mat3":mat3, "angle":angle} exec ('E = mat3.fromEuler%s(angle["X"], angle["Y"], angle["Z"])'%order, ns) E = ns["E"] self.assertEqual(E, C) exec ('x,y,z = E.toEuler%s()'%order, ns) exec ('E2 = mat3.fromEuler%s(x, y, z)'%order, ns) E2 = ns["E2"] if E2!=E: # print E # print E2 msg = "The matrix E2 generated from the toEuler() angles doesn't match the original matrix E.\n" msg += "Original angles: (%s, %s, %s), toEuler angles: (%s, %s, %s)"%(degrees(angle["X"]),degrees(angle["Y"]),degrees(angle["Z"]),degrees(x),degrees(y),degrees(z)) self.fail(msg)
def testEuler(self): """Test the fromEuler*() and toEuler*() methods. The result from an fromEuler*() method is compared to an equivalent matrix that is composed by 3 individual rotations. """ angles = [{"X":radians(20), "Y":radians(30), "Z":radians(40)}, {"X":radians(0), "Y":radians(0), "Z":radians(0)}, {"X":radians(350), "Y":radians(0), "Z":radians(0)}, {"X":radians(0), "Y":radians(350), "Z":radians(0)}, {"X":radians(0), "Y":radians(0), "Z":radians(350)},] axis = {"X":vec3(1,0,0), "Y":vec3(0,1,0), "Z":vec3(0,0,1)} for order in ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"]: for angle in angles: R1 = mat3.rotation(angle[order[0]], axis[order[0]]) R2 = mat3.rotation(angle[order[1]], axis[order[1]]) R3 = mat3.rotation(angle[order[2]], axis[order[2]]) # Each rotation is about the *global* axis, so these rotations # have to be applied just in the opposite order than mentioned # in the fromEuler*() method name. C = R1*R2*R3 exec ('E = mat3.fromEuler%s(angle["X"], angle["Y"], angle["Z"])'%order) self.assertEqual(E, C) exec ('x,y,z = E.toEuler%s()'%order) exec ('E2 = mat3.fromEuler%s(x, y, z)'%order) if E2!=E: # print E # print E2 msg = "The matrix E2 generated from the toEuler() angles doesn't match the original matrix E.\n" msg += "Original angles: (%s, %s, %s), toEuler angles: (%s, %s, %s)"%(degrees(angle["X"]),degrees(angle["Y"]),degrees(angle["Z"]),degrees(x),degrees(y),degrees(z)) self.fail(msg)