def drawArcPredicate2(): myscreen = ovdvtk.VTKScreen() myscreen.camera.SetPosition(0.01, 0, 100 ) myscreen.camera.SetFocalPoint(0, 0, 0) myscreen.camera.SetClippingRange(-100,3000) c1 = ovd.Point(0,0) r1=20 alfa1 = (float(23)/float(360) )* 2*math.pi alfa2 = (float(123)/float(360) )* 2*math.pi #alfa2, alfa1 = alfa1, alfa2 # swap alfa1_dir = ovd.Point( math.cos(alfa1), math.sin(alfa1) ) alfa2_dir = ovd.Point( math.cos(alfa2), math.sin(alfa2) ) p1 = c1 + r1*alfa1_dir p2 = c1 + r1*alfa2_dir cw = False drawVertex(myscreen, c1, ovdvtk.orange, rad=1) fa1 = ovdvtk.FollowerText(text="c",color=ovdvtk.orange,center=(c1.x+1,c1.y,0),scale=1) myscreen.addActor(fa1) drawVertex(myscreen, p1, ovdvtk.green, rad=1) fa2 = ovdvtk.FollowerText(text="p1",color=ovdvtk.green,center=(p1.x+1,p1.y,0),scale=1) myscreen.addActor(fa2) drawVertex(myscreen, p2, ovdvtk.red, rad=1) fa3 = ovdvtk.FollowerText(text="p2",color=ovdvtk.red,center=(p2.x+1,p2.y,0),scale=1) myscreen.addActor(fa3) #drawArc(myscreen, p1, p2, c1, True, ovdvtk.yellow) #ovdvtk.drawArc(myscreen, p1, p2, (p1-c1).norm(), c1, True, ovdvtk.yellow, da=0.1) ovdvtk.drawArc(myscreen, p1, p2, (p1-c1).norm(), c1, cw, ovdvtk.orange, da=0.1) Nmax = 5000 for n in range(Nmax): p = 100*ovd.Point( random.random()-0.5, random.random()-0.5 ) apex = apex_point(p1,p2,c1,cw,p) linecolor= ovdvtk.pink if arc_in_region(p1,p2,c1,cw,p): linecolor = ovdvtk.lgreen drawLine(myscreen,p,apex,linecolor) myscreen.render() myscreen.iren.Start()
def drawSeg(myscreen, previous, p): ovdvtk.drawVertex(myscreen, ovd.Point(p[0],p[1]), 0.0001, ovdvtk.red) if (p[2]==-1): # a line-segment drawLine(myscreen, previous, p, ovdvtk.yellow) else: # an arc prev = ovd.Point(previous[0],previous[1]) target = ovd.Point(p[0],p[1]) radius = p[2] cw = p[3] center = ovd.Point(p[4],p[5]) #print "prev ",prev #print "center ",center #print "diff ",prev-center #print "p ",p ovdvtk.drawArc(myscreen, prev, target, radius, center, cw, ovdvtk.orange)
def drawSeg(myscreen, previous, p): ovdvtk.drawVertex(myscreen, ovd.Point(p[0], p[1]), 0.0001, ovdvtk.red) if (p[2] == -1): # a line-segment drawLine(myscreen, previous, p, ovdvtk.yellow) else: # an arc prev = ovd.Point(previous[0], previous[1]) target = ovd.Point(p[0], p[1]) radius = p[2] cw = p.cw center = ovd.Point(p[4], p[5]) # print "prev ",prev # print "center ",center # print "diff ",prev-center # print "p ",p ovdvtk.drawArc(myscreen, prev, target, radius, center, cw, ovdvtk.orange)
def drawArcPredicate2(): myscreen = ovdvtk.VTKScreen() myscreen.camera.SetPosition(0.01, 0, 100) myscreen.camera.SetFocalPoint(0, 0, 0) myscreen.camera.SetClippingRange(-100, 3000) c1 = ovd.Point(0, 0) r1 = 20 alfa1 = (float(23) / float(360)) * 2 * math.pi alfa2 = (float(123) / float(360)) * 2 * math.pi # alfa2, alfa1 = alfa1, alfa2 # swap alfa1_dir = ovd.Point(math.cos(alfa1), math.sin(alfa1)) alfa2_dir = ovd.Point(math.cos(alfa2), math.sin(alfa2)) p1 = c1 + r1 * alfa1_dir p2 = c1 + r1 * alfa2_dir cw = False drawVertex(myscreen, c1, ovdvtk.orange, rad=1) fa1 = ovdvtk.FollowerText(text="c", color=ovdvtk.orange, center=(c1.x + 1, c1.y, 0), scale=1) myscreen.addActor(fa1) drawVertex(myscreen, p1, ovdvtk.green, rad=1) fa2 = ovdvtk.FollowerText(text="p1", color=ovdvtk.green, center=(p1.x + 1, p1.y, 0), scale=1) myscreen.addActor(fa2) drawVertex(myscreen, p2, ovdvtk.red, rad=1) fa3 = ovdvtk.FollowerText(text="p2", color=ovdvtk.red, center=(p2.x + 1, p2.y, 0), scale=1) myscreen.addActor(fa3) # drawArc(myscreen, p1, p2, c1, True, ovdvtk.yellow) # ovdvtk.drawArc(myscreen, p1, p2, (p1-c1).norm(), c1, True, ovdvtk.yellow, da=0.1) ovdvtk.drawArc(myscreen, p1, p2, (p1 - c1).norm(), c1, cw, ovdvtk.orange, da=0.1) Nmax = 5000 for n in range(Nmax): p = 100 * ovd.Point(random.random() - 0.5, random.random() - 0.5) apex = apex_point(p1, p2, c1, cw, p) linecolor = ovdvtk.pink if arc_in_region(p1, p2, c1, cw, p): linecolor = ovdvtk.lgreen drawLine(myscreen, p, apex, linecolor) myscreen.render() myscreen.iren.Start()