Exemple #1
0
 def runTest(self):
     pa = geom.PolyArea(Vs1, F1tri)
     o = offset.Offset(pa, 0.0, 0.0)
     sp = o.facespokes[0][0]
     (t, ve, ee) = o.NextSpokeEvents(sp)
     self.assertEqual(len(ve), 1)
     pa = geom.PolyArea(Vs1, F1concave)
     o = offset.Offset(pa, 0.0, 0.0)
     sp = o.facespokes[0][1]
     (t, ve, ee) = o.NextSpokeEvents(sp)
     self.assertEqual(len(ee), 1)
     self.assertFalse(ee[0].is_vertex_event)
     self.assertEqual(len(ve), 0)
Exemple #2
0
 def testConcave(self):
     pa = geom.PolyArea(Vs1, F1concave)
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     self.assertEqual(len(o.inneroffsets), 2)
     if SHOW:
         ShowOffset(o)
Exemple #3
0
 def runTest(self):
     pa = geom.PolyArea(Vs1, F1tri)
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build(0.1)
     pas = o.InnerPolyAreas()
     self.assertEqual(len(pas.polyareas), 1)
     ipa = pas.polyareas[0]
     self.assertEqual(len(ipa.poly), 3)
Exemple #4
0
 def testIrreg(self):
     pa = geom.PolyArea(Vs4, F4)
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     self.assertAlmostEqual(o.endtime, 0.1155192686)
     self.assertEqual(len(o.inneroffsets), 1)
     if SHOW:
         ShowOffset(o)
Exemple #5
0
 def testRect(self):
     pa = geom.PolyArea(Vs2, [0, 12, 15, 1])
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     self.assertAlmostEqual(o.endtime, 0.5)
     self.assertEqual(len(o.inneroffsets), 0)
     if SHOW:
         ShowOffset(o)
Exemple #6
0
 def runTest(self):
     pts = geom.Points([(0.0, -2.0), (0.5, 0.0), (1.0, 0.0), (2.0, 1.0),
                        (3.0, 0.0)])
     pa = geom.PolyArea(pts, [0, 1, 2, 3, 4])
     o = offset.Offset(pa, 0.0, 0.0)
     sp = o.facespokes[0][1]
     ev = sp.VertexEvent(o.facespokes[0][2], pa.points)
     self.assertEqual(ev, None)
Exemple #7
0
 def testTri(self):
     pa = geom.PolyArea(
         geom.Points([(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (0.5, 0.25, 0.0)]),
         [0, 1, 2])
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     m = geom.Model()
     m.points = pa.points
     model.AddOffsetFacesToModel(m, o)
     if SHOW:
         showfaces.ShowFaces(m.faces, m.points, "Tri")
Exemple #8
0
 def testOneHole(self):
     pa = geom.PolyArea(Vs1, F1square)
     pahole = geom.PolyArea(
         geom.Points([(0.3, 0.5, 0.0), (0.6, 0.65, 0.0), (0.45, 0.8, 0.0)]),
         [0, 1, 2])
     pa.AddHole(pahole)
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     self.assertEqual(len(o.inneroffsets), 1)
     if SHOW:
         ShowOffset(o)
Exemple #9
0
 def testIrreg(self):
     pa = geom.PolyArea(
         geom.Points([(0.0, 0.1, 0.0), (-0.1, -0.2, 0.0), (0.1, -0.25, 0.0),
                      (0.3, 0.05, 0.0), (1.0, 0.0, 0.0), (1.1, 1.0, 0.0),
                      (-0.1, 1.2, 0.0)]), list(range(0, 7)))
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     m = geom.Model()
     m.points = pa.points
     model.AddOffsetFacesToModel(m, o)
     if SHOW:
         showfaces.ShowFaces(m.faces, m.points, "Irreg")
Exemple #10
0
 def runTest(self):
     pa = geom.PolyArea(Vs1, F1concave)
     o = offset.Offset(pa, 0.0, 0.0)
     sp = o.facespokes[0][1]
     other = o.facespokes[0][3]
     ev = sp.EdgeEvent(other, o)
     # trig shows t/(.75-h)=sin(alpha) where tan(alpha)=2
     alpha = math.atan(2)
     sinalpha = math.sin(alpha)
     t = 0.75 * sinalpha / (1.0 + sinalpha)
     self.assertAlmostEqual(ev.time, t)
     self.assertAlmostEqual(ev.event_vertex[0], 0.5)
     self.assertAlmostEqual(ev.event_vertex[1], 1.0 - t)
Exemple #11
0
 def runTest(self):
     pa = geom.PolyArea(Vs1, F1tri)
     o = offset.Offset(pa, 0.0, 0.0)
     sp = o.facespokes[0][0]
     # spoke goes from (0,0) bisecting (1,0) and (1,.5) lines
     alpha = math.atan(0.5)
     halpha = alpha / 2.0  # angle of spoke
     self.assertAlmostEqual(sp.speed, 1.0 / math.sin(halpha))
     self.assertAlmostEqual(sp.dir[0], math.cos(halpha))
     self.assertAlmostEqual(sp.dir[1], math.sin(halpha))
     ev = sp.VertexEvent(o.facespokes[0][1], pa.points)
     # time is height of triangle with base .5 and angle halpha
     # that is also the y value of the intersection point
     self.assertAlmostEqual(ev.time, 0.5 * math.tan(halpha))
     self.assertAlmostEqual(ev.event_vertex[1], ev.time)
     self.assertAlmostEqual(ev.event_vertex[0], 0.5)
Exemple #12
0
 def testD(self):
     pa = geom.PolyArea(V3D, FDouter, [FDinner])
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     if SHOW:
         ShowOffset(o)
Exemple #13
0
 def test3(self):
     pa = geom.PolyArea(V3D, F3)
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     if SHOW:
         ShowOffset(o)
Exemple #14
0
 def testM(self):
     pa = geom.PolyArea(Vsm, Fsm)
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     if SHOW:
         ShowOffset(o)
Exemple #15
0
 def testTri(self):
     pa = geom.PolyArea(Vs1, F1tri)
     o = offset.Offset(pa, 0.0, 0.0)
     o.Build()
     self.assertAlmostEqual(o.endtime, 0.11803398875)
     self.assertEqual(len(o.inneroffsets), 0)