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()
Exemple #2
0
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) 
Exemple #3
0
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()