for x in L: if x in d: d[x] += 1 else: d[x] = 1 return d if __name__ == "__main__": width = 1920 height = 1080 pixmult = 1 width = pixmult * 1024 height = pixmult * 1024 myscreen = ovdvtk.VTKScreen(width, height) ovdvtk.drawOCLtext(myscreen, rev_text=ovd.version()) w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInput(w2if.GetOutput()) #w2if.Modified() #lwr.SetFileName("tux1.png") scale = 1 myscreen.render() random.seed(42) far = 1 camPos = far zmult = 4
poly_text = "{0} vertices".format(N) t.SetText("CGAL::random_polygon_2\n" + date_text + "\n" + poly_text) myscreen.addActor(t) def drawGithub(myscreen): gittext = ovdvtk.Text() gittext.SetPos((50, 50)) gittext_text = "github.com/aewallin" gittext.SetText(gittext_text) myscreen.addActor(gittext) if __name__ == "__main__": print rpg.version() myscreen = ovdvtk.VTKScreen(width=1024, height=720) #(width=1920, height=1080) drawGithub(myscreen) # for screenshot writing: w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) #lwr = vtk.vtkPNGWriter() #lwr.SetInput( w2if.GetOutput() ) myscreen.render() camPos = 1 zmult = 4 # position the camera 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)
import math import random import os import sys import pickle import gzip if __name__ == "__main__": # w=2500 # h=1500 # w=1920 # h=1080 w = 1024 h = 1024 myscreen = ovdvtk.VTKScreen(width=w, height=h) ovdvtk.drawOCLtext(myscreen, rev_text=ovd.version()) w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInputConnection(w2if.GetOutputPort()) # w2if.Modified() # lwr.SetFileName("tux1.png") scale = 1 myscreen.render() random.seed(42) far = 1 camPos = far zmult = 3
import ovdvtk import time import vtk import math import offset2vtk if __name__ == "__main__": # w=2500 # screen resolution for big screens # h=1500 # w=1920 # h=1080 w = 1024 h = 1024 myscreen = ovdvtk.VTKScreen(width=w, height=h) # a VTK window for drawing ovdvtk.drawOCLtext( myscreen, rev_text=ovd.version()) # the OpenVoronoi text, revision, and date scale = 1 myscreen.render() far = 1 camPos = far zmult = 3 # camPos/float(1000) 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)
def circleGenerators(far, Nmax, shuffle=0): # POINTS ON A CIRCLE dalfa = float(2 * math.pi) / float(Nmax - 1) plist = [] radius = 0.81234 * float(far) for n in range(Nmax): x = float(radius) * math.cos(float(n) * float(dalfa)) y = float(radius) * math.sin(float(n) * float(dalfa)) plist.append(ovd.Point(x, y)) if shuffle: random.shuffle(plist) return plist if __name__ == "__main__": myscreen = ovdvtk.VTKScreen() ovdvtk.drawOCLtext(myscreen) w2if = vtk.vtkWindowToImageFilter() w2if.SetInput(myscreen.renWin) lwr = vtk.vtkPNGWriter() lwr.SetInputConnection(w2if.GetOutputPort()) # w2if.Modified() # lwr.SetFileName("tux1.png") scale = 1 myscreen.render() random.seed(42) far = 1 camPos = far
def drawBitangents(): myscreen = ovdvtk.VTKScreen() myscreen.camera.SetPosition(0.01, 0, 100) myscreen.camera.SetFocalPoint(0, 0, 0) myscreen.camera.SetClippingRange(-100, 3000) """ c1 = ovd.Point(10,20) r1=20 c2 = ovd.Point(6,13) r2=23 """ # external ma-pocket fails with this input: c1 = ovd.Point(0, -18) r1 = 16.7033 c2 = ovd.Point(0, -17.2167) r2 = 15.9299 drawCircle(myscreen, c1, r1, ovdvtk.red) drawCircle(myscreen, c2, r2, ovdvtk.green) # when machining c2 the maximum cut-width is # w_max = | c2 - c1 | + r2 - r1 # we are looking for the bi-tangents of the two circles, given by # A x + B y + C = 0 # with the constraint A^2 + B^2 = 1 # the line-should be a bi-tangent, so: # +/- r1 = A c1x + B c1y + C # +/- r2 = A c2x + B c2y + C # which in matrix form is # Mc=v # ( c1x c1y ) ( A ) = ( +/- r1 - C ) # ( c2x c2y ) ( B ) = ( +/- r2 - C ) # # now solve for A and B using Cramers rule # # A = det(M_1) / det(M) = det ( +/-r1-C c1y ) / det(M) = mC + n # ( +/-r2-C c2y ) # and # B = det(M_2) / det(M) = det ( c1x +/-r1-C ) / det(M) = pC + q # ( c2x +/-r2-C ) # this can be inserted into the constraint # A^2 + B^2 = 1 # (mC + n )^2 + (pC+q)^2 # m^2 C^2 + 2mnC + n^2 + p^2 C^2 + 2pqC + q^2 =1 # # C^2 ( m^2 + p^2 ) + C 2(mn+pq) + n^2 + q^2 = 1 # # +r1 +r2 case: # det( r1-C c1y ) = (r1-C)c2y - (r2-C)c1y = C (c1y-c2y) + (c2y*r1 - c1y*r2) # ( r2-C c2y ) # det( c1x r1-C ) = c1x(r2-C) - c2x(r1-C) = C ( c2x-c1x ) + (c1x*r2 - c2x*r1) # ( c2x r2-C ) lines = [] detM = c1.x * c2.y - c2.x * c1.y print "detM= ", detM m = (c1.y - c2.y) / detM p = (c2.x - c1.x) / detM n = (c2.y * r1 - c1.y * r2) / detM q = (c1.x * r2 - c2.x * r1) / detM roots1 = quadratic_roots(m * m + p * p, 2 * (m * n + p * q), n * n + q * q - 1) print "roots1 ", roots1 for r in roots1: lines.append(root_to_line(r, m, n, p, q)) """ n = ( c2.y*(-1)*r1 - c1.y*(-1)*r2 ) / detM q = ( c1.x*(-1)*r2 - c2.x*(-1)*r1 ) / detM roots2 = quadratic_roots( m*m+p*p, 2*(m*n+p*q), n*n+q*q-1) print "roots2 ", roots2 for r in roots2: lines.append( root_to_line(r,m,n,p,q) ) """ for l in lines: drawLine(myscreen, l, ovdvtk.yellow) # now figure out the tangent points # this is the point on the tangent closest to the center. # Ax + By + C = 0 # (xc-x^2) + (yc-y^2) = r^2 # # from C, go a distance r along the normal to the line. p1 = c1 - r1 * ovd.Point(lines[0].a, lines[0].b) p2 = c1 - r1 * ovd.Point(lines[1].a, lines[1].b) drawCircle(myscreen, p1, 0.5, ovdvtk.pink) drawCircle(myscreen, p2, 0.5, ovdvtk.pink) p3 = c2 - r2 * ovd.Point(lines[0].a, lines[0].b) p4 = c2 - r2 * ovd.Point(lines[1].a, lines[1].b) drawCircle(myscreen, p3, 0.5, ovdvtk.pink) drawCircle(myscreen, p4, 0.5, ovdvtk.pink) # drawLine( myscreen, l2, ovdvtk.orange ) # print roots myscreen.render() myscreen.iren.Start()
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()