def test_translate(self): eq = self.almostEqual m = Transform().translate(2) eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), (1., 0., 0., 2., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1.)) m = Transform().translate(2, 3) eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), (1., 0., 0., 2., 0., 1., 0., 3., 0., 0., 1., 0., 0., 0., 0., 1.)) m = Transform().translate(2, 3, 4) eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), (1., 0., 0., 2., 0., 1., 0., 3., 0., 0., 1., 4., 0., 0., 0., 1.)) m = Transform().translate((2, 3, 4)) eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), (1., 0., 0., 2., 0., 1., 0., 3., 0., 0., 1., 4., 0., 0., 0., 1.))
def test_map(self): eq = self.almostEqual p = Point(1,2,3) m = Transform().translate((2,3,4)) eq(m.map(p), (3,5,7)) p = Point(1,2,3) m = Transform().scale((2,2,2)) eq(m.map(p), (2,4,6)) p = ((1,2,3), (3,2,1)) m = Transform().scale((2,2,2)) res = m.map(p) eq((res[0][0], res[0][1], res[0][2], res[1][0], res[1][1], res[1][2],), (2.0, 4.0, 6.0, 6.0, 4.0, 2.0)) p = (Point(1,2,3), Point(3,2,1)) m = Transform().scale((2,2,2)) res = m.map(p) eq((res[0][0], res[0][1], res[0][2], res[1][0], res[1][1], res[1][2],), (2.0, 4.0, 6.0, 6.0, 4.0, 2.0))
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_arithmeticops(self): eq = self.almostEqual # __abs__ eq(Point(1., 2., 3.), abs(Point(-1., -2., -3.))) # __neg__ eq(-Point(1., 2., 3.), Point(-1., -2., -3.)) # __pos__ eq(+Point(1., 2., -3.), Point(1., 2., -3.)) # __add__ eq(Point(1., 2., 3.) + Point(-1., -2., -3.), Point(0., 0., 0.)) # __iadd__ p1 = Point(1., 2., 3.) p1 += Point(-1., -2., -3.) eq(p1, Point(0., 0., 0.)) # __sub__ self.assertTrue(Point(1., 2., 3.) - Point(-1., -2., -3.) == Point(2., 4., 6.)) # __isub__ p1 = Point(1., 2., 3.) p1 -= Point(1., 2., 3.) self.assertTrue(p1 == Point(0., 0., 0.)) # __mul__ eq(Point(1., 2., 3.) * 2., Point(2.0, 4.0, 6.0)) eq(2. * Point(1., 2., 3.), Point(2.0, 4.0, 6.0)) p = Point(1.,2.,3.) m = Transform().translate(3.,2.,1.) q = p * m eq(q, Point(4.,4.,4.)) # __rmul__ eq(2. * Point(1., 2., 3.), Point(2.0, 4.0, 6.0)) # __imul__ p1 = Point(1.,2.,3.) p1 *= 2. eq(p1, Point(2., 4., 6.)) # __div__ eq(Point(1., 2., 3.) / 2., Point(1./2., 2./2., 3./2.)) # __idiv__ p1 = Point(1., 2., 3.) p1 /= 2. eq(p1, Point(1./2., 2./2., 3./2.)) # __rdiv__ eq(1. / Point(1., 2., 3.), Point(1./1., 1./2., 1./3.))
def test_transform(self): p = Plane.fromNormal((0.,0.,0.), (0.,0.,1.)) tr = Transform().translate(0.,0.,1.) self.assertTrue(p.distanceTo((0.,0.,-1.5)) == -1.5) self.assertTrue(p.origin == Point(0.,0.,0.)) p.transform(tr) self.assertTrue(p.distanceTo((0.,0.,-1.5)) == -2.5) self.assertTrue(p.origin == Point(0.,0.,1.))
def test_transform(self): eq = self.almostEqual e1 = Edge().createLine((-1., -2., -3.), (0., 0., 0.)) m = Transform().translate(1., 2., 3.) e1.transform(m) v1, v2 = e1 eq(v1, (0., 0., 0.)) eq(v2, (1., 2., 3.)) m = Transform().translate(-1., -2., -3.) e2 = e1.transform(m, copy=True) v1, v2 = e1 eq(v1, (0., 0., 0.)) eq(v2, (1., 2., 3.)) v1, v2 = e2 eq(v1, (-1., -2., -3.)) eq(v2, (0., 0., 0.))
def test_empty(self): eq = self.assertEqual e1 = Edge() self.assertRaises(OCCError, e1.shapeType) eq(e1.isNull(), True) eq(e1.isValid(), False) eq(e1.isDegenerated(), True) eq(e1.hasPlane(), False) eq(len(e1), 0) eq(tuple(e1), ()) m = Transform().translate(1., 2., 3.) self.assertRaises(OCCError, e1.transform, m) self.assertRaises(OCCError, e1.translate, (1., 2., 3.)) self.assertRaises(OCCError, e1.rotate, pi, (0., 1., 0.)) self.assertRaises(OCCError, e1.scale, (0., 0., 0.), 2.)
def test_init_and_accessors(self): eq = self.almostEqual m = Transform() eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), (1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1.)) m = Transform(*range(1, 17)) eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), range(1, 17)) m = Transform( ((1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12), (13, 14, 15, 16))) eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), range(1, 17)) m = Transform() m[0][0] = 1 m[0][1] = 2 m[0][2] = 3 m[0][3] = 4 m[1][0] = 5 m[1][1] = 6 m[1][2] = 7 m[1][3] = 8 m[2][0] = 9 m[2][1] = 10 m[2][2] = 11 m[2][3] = 12 m[3][0] = 13 m[3][1] = 14 m[3][2] = 15 m[3][3] = 16 eq((m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3]), range(1, 17)) m = Transform(*range(1, 17)) n = m[0] eq(( n[0], n[1], n[2], n[3], ), range(1, 5)) n = m[1] eq(( n[0], n[1], n[2], n[3], ), range(5, 9)) n = m[2] eq(( n[0], n[1], n[2], n[3], ), range(9, 13)) n = m[3] eq(( n[0], n[1], n[2], n[3], ), range(13, 17)) n[0] = 17 eq(( n[0], n[1], n[2], n[3], ), (17, 14, 15, 16))
def test_map(self): eq = self.almostEqual p = Point(1, 2, 3) m = Transform().translate((2, 3, 4)) eq(m.map(p), (3, 5, 7)) p = Point(1, 2, 3) m = Transform().scale((2, 2, 2)) eq(m.map(p), (2, 4, 6)) p = ((1, 2, 3), (3, 2, 1)) m = Transform().scale((2, 2, 2)) res = m.map(p) eq(( res[0][0], res[0][1], res[0][2], res[1][0], res[1][1], res[1][2], ), (2.0, 4.0, 6.0, 6.0, 4.0, 2.0)) p = (Point(1, 2, 3), Point(3, 2, 1)) m = Transform().scale((2, 2, 2)) res = m.map(p) eq(( res[0][0], res[0][1], res[0][2], res[1][0], res[1][1], res[1][2], ), (2.0, 4.0, 6.0, 6.0, 4.0, 2.0))
def test_rotate(self): eq = self.almostEqual m = Transform().rotateZ(pi / 2.) eq(m.map((1., 0.)), (0., 1.))
def test_rotate(self): eq = self.almostEqual m = Transform().rotateZ(pi/2.) eq(m.map((1.,0.)), (0.,1.))