def test_multiply_vector(self): mat = Matrix4(IDENTITY) vec = MVec(1, 2, 3, 1) self.assertEqual(mat * vec, vec)
def test_as_n_d(self): self.assertEqual(len(MVec(1, 3).as_n_d(4)), 4) self.assertEqual(len(MVec(1, 3).as_n_d(1)), 1)
def test_normalize(self): v = MVec(1, 2, 3) v.normalize() self.assertTrue(v.len() == 1)
def test_inequality(self): self.assertTrue(MVec(1, 3) != MVec(1, 2)) self.assertTrue(MVec(1, 30) != 1)
def test_equality(self): self.assertTrue(MVec(1, 2) == MVec(1, 2)) self.assertTrue(MVec(1, 3) == MVec(1, 3))
def test_cross(self): self.assertTrue(MVec(2, 3, 4).cross(MVec(5, 6, 7)) == MVec(-3, 6, -3))
def test_dot(self): self.assertTrue(MVec(-12, 16).dot(MVec(12, 9)) == 0)
""" Requires model to be available (none are bundled with qlibs) """ from qlibs.resources import resource_loader, resource_manager from qlibs.math.vec import MVec resource_loader.loader.loaders.append(resource_loader.SearchLocationLoader("/home/iquant/programs/MagicaVoxel-0.99.4-alpha-win64/export", "models/")) model = resource_manager.load_model("models/Stick.obj") min_vec = MVec(model.v[0]) max_vec = MVec(model.v[0]) for v in model.v: x, y, z = v if x > max_vec.x: max_vec.x = x if y > max_vec.y: max_vec.y = y if z > max_vec.z: max_vec.z = z if x < min_vec.x: min_vec.x = x if y < min_vec.y: min_vec.y = y if z < min_vec.z: min_vec.z = z