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)
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)
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)
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)
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)
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)
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")
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)
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")
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)
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)
def testD(self): pa = geom.PolyArea(V3D, FDouter, [FDinner]) o = offset.Offset(pa, 0.0, 0.0) o.Build() if SHOW: ShowOffset(o)
def test3(self): pa = geom.PolyArea(V3D, F3) o = offset.Offset(pa, 0.0, 0.0) o.Build() if SHOW: ShowOffset(o)
def testM(self): pa = geom.PolyArea(Vsm, Fsm) o = offset.Offset(pa, 0.0, 0.0) o.Build() if SHOW: ShowOffset(o)
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)