def drawBisector(myscreen, bis): N = 200 """ t= bis.minT() tmax = 400 dt = float(tmax)/float(N) """ ppts = [] mpts = [] for t in bis.trange(N): ppts.append(bis.Point(t, 1)[0]) # with positive sign mpts.append(bis.Point(t, 1)[1]) # with negative sign #t= t+dt #for p in ppts: # drawVertex(myscreen, p, ovdvtk.green, rad=1) for n in range(len(ppts) - 1): p1 = ppts[n] p2 = ppts[n + 1] myscreen.addActor( ovdvtk.Line(p1=(p1.x, p1.y, 0), p2=(p2.x, p2.y, 0), color=ovdvtk.green)) #for p in mpts: # drawVertex(myscreen, p, ovdvtk.red, rad=1) for n in range(len(mpts) - 1): p1 = mpts[n] p2 = mpts[n + 1] myscreen.addActor( ovdvtk.Line(p1=(p1.x, p1.y, 0), p2=(p2.x, p2.y, 0), color=ovdvtk.red))
def drawLoops(myscreen, loops, loopColor): # draw the loops nloop = 0 for lop in loops: n = 0 N = len(lop) first_point = [] previous = [] for p in lop: #print p if n == 0: # don't draw anything on the first iteration previous = p first_point = p elif n == (N - 1): # the last point myscreen.addActor( ovdvtk.Line(p1=(previous[0], previous[1], 0), p2=(p[0], p[1], 0), color=loopColor)) # the normal line # and a line from p to the first point myscreen.addActor( ovdvtk.Line(p1=(p[0], p[1], 0), p2=(first_point[0], first_point[1], 0), color=loopColor)) else: myscreen.addActor( ovdvtk.Line(p1=(previous[0], previous[1], 0), p2=(p[0], p[1], 0), color=loopColor)) print("line %s to %s" % (previous, p)) previous = p n = n + 1 print("rendered loop %s with %s points" % (nloop, len(lop))) nloop = nloop + 1
def drawLoops(myscreen, loops, loopColor): """ draw the loops """ nloop = 0 for lop in loops: n = 0 N = len(lop) first_point = [] previous = [] for p in lop: if n == 0: # don't draw anything on the first iteration previous = p first_point = p elif n == (N - 1): # the last point myscreen.addActor( ovdvtk.Line(p1=(previous[0], previous[1], 0), p2=(p[0], p[1], 0), color=loopColor)) # the normal line # and a line from p to the first point myscreen.addActor( ovdvtk.Line(p1=(p[0], p[1], 0), p2=(first_point[0], first_point[1], 0), color=loopColor)) else: myscreen.addActor( ovdvtk.Line(p1=(previous[0], previous[1], 0), p2=(p[0], p[1], 0), color=loopColor)) previous = p n = n + 1 print "rendered loop ", nloop, " with ", len(lop), " points" nloop = nloop + 1
def drawLine(myscreen, l, lineColor): # x = -by-c / a # if l.a != 0: if (abs(l.a) > abs(l.b)): y = 100 p1 = ovd.Point(float(-l.b * y - l.c) / l.a, y) y = -100 p2 = ovd.Point(float(-l.b * y - l.c) / l.a, y) myscreen.addActor(ovdvtk.Line(p1=(p1.x, p1.y, 0), p2=(p2.x, p2.y, 0), color=lineColor)) else: x = 100 p1 = ovd.Point(x, float(-l.a * x - l.c) / l.b) x = -100 p2 = ovd.Point(x, float(-l.a * x - l.c) / l.b) myscreen.addActor(ovdvtk.Line(p1=(p1.x, p1.y, 0), p2=(p2.x, p2.y, 0), color=lineColor))
def drawEdge(myscreen, e, edgeColor=ovdvtk.yellow): p1 = e[0] p2 = e[1] myscreen.addActor( ovdvtk.Line(p1=(p1.x, p1.y, p1.z), p2=(p2.x, p2.y, p2.z), color=edgeColor))
def drawArc(myscreen, pt1, pt2, r, cen, cw, arcColor): start = pt1 - cen end = pt2 - cen theta1 = math.atan2(start.x, start.y) theta2 = math.atan2(end.x, end.y) alfa = [] # the list of angles da = 0.1 CIRCLE_FUZZ = 1e-9 # idea from emc2 / cutsim g-code interp G2/G3 if (cw == False): while ((theta2 - theta1) > -CIRCLE_FUZZ): theta2 -= 2 * math.pi else: while ((theta2 - theta1) < CIRCLE_FUZZ): theta2 += 2 * math.pi dtheta = theta2 - theta1 arclength = r * dtheta dlength = min(0.01, arclength / 10) steps = int(float(arclength) / float(dlength)) rsteps = float(1) / float(steps) dc = math.cos(-dtheta * rsteps) # delta-cos ds = math.sin(-dtheta * rsteps) # delta-sin previous = pt1 tr = [start.x, start.y] for i in range(steps): tr = rotate(tr[0], tr[1], dc, ds) # ; // rotate center-start vector by a small amount x = cen.x + tr[0] y = cen.y + tr[1] current = ovd.Point(x, y) myscreen.addActor(ovdvtk.Line(p1=(previous.x, previous.y, 0), p2=(current.x, current.y, 0), color=arcColor)) previous = current
def drawCurve(myscreen,curve,loopColor): n = 0 N = len(curve) first_point=[] previous=[] for p in curve: if n==0: # don't draw anything on the first iteration previous=p first_point = p else: myscreen.addActor( ovdvtk.Line(p1=(previous[0],previous[1],0),p2=(p[0],p[1],0),color=loopColor) ) previous=p n=n+1 print "rendered curve with ", len(curve), " points"
def drawLine(myscreen, p1, p2): myscreen.addActor( ovdvtk.Line(p1=(p1.x, p1.y, 0), p2=(p2.x, p2.y, 0), color=ovdvtk.yellow))
def drawLine(myscreen, p1, p2): myscreen.addActor( ovdvtk.Line(p1=(p1[0], p1[1], 0), p2=(p2[0], p2[1], 0), color=ovdvtk.yellow2))
def drawArc(myscreen, pt1, pt2, r, arcColor): myscreen.addActor( ovdvtk.Line(p1=(pt1.x, pt1.y, 0), p2=(pt2.x, pt2.y, 0), color=arcColor))
def drawLine(myscreen, pt1, pt2, lineColor): myscreen.addActor( ovdvtk.Line(p1=(pt1.x, pt1.y, 0), p2=(pt2.x, pt2.y, 0), color=lineColor))
def drawLine(myscreen, previous, p, loopColor): myscreen.addActor( ovdvtk.Line(p1=(previous[0], previous[1], 0), p2=(p[0], p[1], 0), color=loopColor))
writeFrame(w2if, lwr, nf) nf = nf + 1 # """ # DELETE-EDGES # """ delEdges = vd.getDeleteEdges(p) modEdges = vd.getModEdges(p) # print " seed vertex is ",sv edge_actors = [] if n in ren: for e in delEdges: p1 = scale * e[0] p2 = scale * e[1] e_actor = ovdvtk.Line(p1=(p1.x, p1.y, 0), p2=(p2.x, p2.y, 0), color=ovdvtk.red) edge_actors.append(e_actor) for e in modEdges: p1 = scale * e[0] p2 = scale * e[1] e_actor = ovdvtk.Line(p1=(p1.x, p1.y, 0), p2=(p2.x, p2.y, 0), color=ovdvtk.green) edge_actors.append(e_actor) for a in edge_actors: myscreen.addActor(a) myscreen.render() time.sleep(delay) writeFrame(w2if, lwr, nf) nf = nf + 1
# draw a unit-circle ca = ovdvtk.Circle(center=(0,0,0) , radius=1, color=(0,1,1), resolution=50 ) myscreen.addActor(ca) scale=1 far = 1 camPos = far zmult = 3 myscreen.camera.SetPosition(0, -camPos/float(1000), zmult*camPos) myscreen.camera.SetClippingRange(-(zmult+1)*camPos,(zmult+1)*camPos) myscreen.camera.SetFocalPoint(0.0, 0, 0) size = 1.1 # bounding-box myscreen.addActor( ovdvtk.Line(p1=(-size/2,-size/2,0),p2=(-size/2,size/2,0),color=ovdvtk.orange) ) myscreen.addActor( ovdvtk.Line(p1=(-size/2,size/2,0),p2=(size/2,size/2,0),color=ovdvtk.orange) ) myscreen.addActor( ovdvtk.Line(p1=(size/2,size/2,0),p2=(size/2,-size/2,0),color=ovdvtk.orange) ) myscreen.addActor( ovdvtk.Line(p1=(size/2,-size/2,0),p2=(-size/2,-size/2,0),color=ovdvtk.orange) ) startpt = [-size/2,-size/2] level = 5 step = size / math.pow(2, level) Hilbert( 0, level, 90, step, startpt) #print pts drawCurve2(myscreen,pts,ovdvtk.yellow) print "PYTHON All DONE." myscreen.render()