def test_fromFrame(self): p1 = Plane.fromFrame((0.,0.,0.), (-1.,0.,0.), (0.,-1.,0.)) self.assertTrue(p1.origin == Point(0.,0.,0.)) self.assertTrue(p1.xaxis == Vector(-1.,0.,0.)) self.assertTrue(p1.yaxis == Vector(0.,-1.,0.)) self.assertTrue(p1.zaxis == Vector(0.,0.,1.)) self.assertTrue(p1.a == 0.) self.assertTrue(p1.b == 0.) self.assertTrue(p1.c == 1.) self.assertTrue(p1.d == 0.)
def test_imul(self): eq = self.assertAlmostEqual q1 = Quaternion.fromAngleAxis(math.radians(90.), Vector(0., 0., 1.)) q2 = Quaternion.fromAngleAxis(math.radians(-90.), Vector(0., 0., 1.)) q1 *= q2 eq(q1.w, 1.) eq(q1.x, 0.) eq(q1.y, 0.) eq(q1.z, 0.)
def test_init_and_accessors(self): eq = self.almostEqual p = Vector(1., 2., 3.) eq((p.x, p.y, p.z), (1., 2., 3.)) p.x, p.y, p.z = -1., -2., -3. eq((p.x, p.y, p.z), (-1., -2., -3.)) eq(Vector(1., 2.), (1., 2., 0.)) eq(Vector(), (0., 0., 0)) eq(Vector((1., 2., 3.)), (1., 2., 3.)) eq(Vector((1., 2.)), (1., 2., 0.)) eq(Vector(()), (0., 0., 0))
def test_imap(self): eq = self.assertAlmostEqual q = Quaternion.fromAngleAxis(math.radians(90.), Vector(0., 0., 1.)) p = q.imap((1., 0., 0.)) eq(p[0], 0.) eq(p[1], -1.) eq(p[2], 0.)
def test_isPerpendicular(self): self.assertTrue( isPerpendicular(Vector(1., 0., 0.), Vector(0., 1., 0.)) == True) self.assertTrue( isPerpendicular(Vector(0., 1., 0.), Vector(0., 0., 1.)) == True) self.assertTrue( isPerpendicular(Vector(1., 2., 3.), Vector(1., 2., 3.)) == False)
def test_transform(self): eq = self.assertAlmostEqual q = Quaternion.fromAngleAxis(math.radians(90.), Vector(0., 0., 1.)) a = q.map((1., 0., 0.)) tr = q.transform b = tr.map((1., 0., 0.)) eq(a[0], b[0]) eq(a[1], b[1]) eq(a[2], b[2])
def test_hasPlane(self): eq = self.assertEqual aeq = self.almostEqual e5 = Edge().createCircle(center=(0., 0., 0.), normal=(0., 0., 1.), radius=1.) eq(e5.hasPlane(), True) pnt = Point(-1., -1., -1.) vec = Vector(-1., -1., -1.) e5.hasPlane(pnt, vec) aeq(pnt, (0., 0., 0.)) aeq(vec, (0., 0., 1.))
def test_cross(self): eq = self.almostEqual eq(cross(Vector(1., 2., 3.), Vector(4., 5., 6.)), (2. * 6. - 5. * 3., 3. * 4. - 6. * 1., 1. * 5. - 4. * 2.))
def test___getitem__(self): eq = self.almostEqual p = Vector(1., 2., 3.) eq((p[0], p[1], p[2]), (1., 2., 3.)) p.x, p.y, p.z = -1., -2., -3. eq((p.x, p.y, p.z), (-1., -2., -3.))
def test_set(self): eq = self.almostEqual p = Vector(1., 2., 3.) p.set(4., 5., 6.) eq(p, (4., 5., 6.)) p = Vector(1., 2., 3.) p.set(4., 5.) eq(p, (4., 5., 3.)) p = Vector(1., 2., 3.) p.set(4.) eq(p, (4., 2., 3.)) p = Vector(1., 2., 3.) p.set() eq(p, (1., 2., 3.)) p = Vector(1., 2., 3.) p.set((4., 5., 6.)) eq(p, (4., 5., 6.)) p = Vector(1., 2., 3.) p.set((4., 5.)) eq(p, (4., 5., 3.)) p = Vector(1., 2., 3.) p.set((4., )) eq(p, (4., 2., 3.)) p = Vector(1., 2., 3.) p.set(()) eq(p, (1., 2., 3.))
def test_arithmeticops(self): eq = self.almostEqual # __abs__ eq(Vector(1., 2., 3.), abs(Vector(-1., -2., -3.))) # __neg__ eq(-Vector(1., 2., 3.), Vector(-1., -2., -3.)) # __pos__ eq(+Vector(1., 2., -3.), Vector(1., 2., -3.)) # __add__ eq(Vector(1., 2., 3.) + Vector(-1., -2., -3.), Vector(0., 0., 0.)) # __iadd__ p1 = Vector(1., 2., 3.) p1 += Vector(-1., -2., -3.) eq(p1, Vector(0., 0., 0.)) # __sub__ self.assertTrue( Vector(1., 2., 3.) - Vector(-1., -2., -3.) == Vector(2., 4., 6.)) # __isub__ p1 = Vector(1., 2., 3.) p1 -= Vector(1., 2., 3.) self.assertTrue(p1 == Vector(0., 0., 0.)) # __mul__ eq(Vector(1., 2., 3.) * 2., Vector(2.0, 4.0, 6.0)) eq(2. * Vector(1., 2., 3.), Vector(2.0, 4.0, 6.0)) p = Vector(1., 2., 3.) m = Transform().translate(3., 2., 1.) q = p * m eq(q, Vector(4., 4., 4.)) self.assertAlmostEqual( Vector(1., 2., 3.) * Vector(4, 5, 6), 1. * 4. + 2. * 5. + 3. * 6.) # __rmul__ eq(2. * Vector(1., 2., 3.), Vector(2.0, 4.0, 6.0)) # __imul__ p1 = Vector(1., 2., 3.) p1 *= 2. eq(p1, Vector(2., 4., 6.)) # __div__ eq(Vector(1., 2., 3.) / 2., Vector(1. / 2., 2. / 2., 3. / 2.)) # __idiv__ p1 = Vector(1., 2., 3.) p1 /= 2. eq(p1, Vector(1. / 2., 2. / 2., 3. / 2.)) # __rdiv__ eq(1. / Vector(1., 2., 3.), Vector(1. / 1., 1. / 2., 1. / 3.))
def test__str__(self): assert str(Vector()).startswith(Vector().__class__.__name__)
def test__repr__(self): eq = self.almostEqual p = Vector(eval(repr(Vector(1, 2, 3)))) eq((p.x, p.y, p.z), (1., 2., 3.))
def test_maximumCoordinateIndex(self): self.assertTrue(Vector(0., 4., 2.).maximumCoordinateIndex() == 1)
def test_isZero(self): self.assertTrue(Vector(0., 0., 0.).isZero()) self.assertTrue(not Vector(1., 2., 3.).isZero())
def test_maximumCoordinate(self): eq = self.assertAlmostEqual eq(Vector(0., 4., 2.).maximumCoordinate(), 4.)
def test_dot(self): eq = self.assertAlmostEqual eq(dot(Vector(1., 2., 3.), Vector(4, 5, 6)), 1. * 4. + 2. * 5. + 3. * 6.)
def test_unit(self): eq = self.assertAlmostEqual p = Vector(1., 2., 3.).unit() eq(p.x**2 + p.y**2 + p.z**2, 1.)
def test_lengthSquared(self): eq = self.assertAlmostEqual eq(Vector(1., 2., 3.).lengthSquared, 1.**2 + 2.**2 + 3.**2)
def test_length(self): eq = self.assertAlmostEqual eq(Vector(1., 2., 3.).length, sqrt(1.**2 + 2.**2 + 3.**2))
def test_isParallell(self): self.assertTrue( isParallell(Vector(1., 2., 3.), Vector(1., 2., 3.)) == True) self.assertTrue( isParallell(Vector(2., 2., 1.), Vector(1., 2., 3.)) == False)
def test_set(self): eq = self.almostEqual p = Vector(1., 2., 3.) p.set(4., 5., 6.) eq(p, (4., 5., 6.)) p = Vector(1., 2., 3.) p.set(4., 5.) eq(p, (4., 5., 3.)) p = Vector(1., 2., 3.) p.set(4.) eq(p, (4., 2., 3.)) p = Vector(1., 2., 3.) p.set() eq(p, (1., 2., 3.)) p = Vector(1., 2., 3.) p.set((4., 5., 6.)) eq(p, (4., 5., 6.)) p = Vector(1., 2., 3.) p.set((4., 5.)) eq(p, (4., 5., 3.)) p = Vector(1., 2., 3.) p.set((4.,)) eq(p, (4., 2., 3.)) p = Vector(1., 2., 3.) p.set(()) eq(p, (1., 2., 3.))