[segs, extents, scale] = get_scaled_segs(mytext) print_scale = float(text_length) / float(0.6) times = insert_many_polygons(vd, segs) # insert segments into vd # count the number of segments num_segs = 0 for s in segs: num_segs = num_segs + len(s) text_length = (extents.maxx - extents.minx) * scale * print_scale text_height = (extents.maxy - extents.miny) * scale * print_scale # print comments to g-code file print "( ttt2medial.py - experimental v-carving script )" print "( TTT++", ttt.version(), " )" print "( OpenVoronoi", ovd.version(), " )" print "( number of polygons: ", len(segs), " )" print "( number of segments: ", num_segs, " )" print "( text length: ", text_length, " )" print "( text height: ", text_height, " )" print "( VD built in %02.3f seconds = %02f us* n*log2{n} )" % ( sum(times), 1e6 * float(sum(times)) / (float(num_segs) * float(math.log10(num_segs) / math.log10(2)))) print "( VD check: ", vd.check(), " )" pi = ovd.PolygonInterior( True) # filter so that only polygon interior remains vd.filter_graph(pi) ma = ovd.MedialAxis() # filter so that only medial axis remains vd.filter_graph(ma)
segs = wr.get_segments() segs = translate(segs, x, y) print "number of polygons: ", len(segs) np = 0 for s in segs: print " polygon ", np, " has ", len(s), " points" np = np + 1 segs = modify_segments(segs) drawLoops(myscreen, segs, ovdvtk.yellow) # this script only draws geometry from ttt # no voronoi-diagram is created! if __name__ == "__main__": print "ttt version = ", ttt.version() #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()) scale = 1 far = 1 camPos = far zmult = 3 myscreen.camera.SetPosition(0, -camPos / float(1000), zmult * camPos)
segs = translate(segs, -extents[0], -extents[2] ) # scale to desired length current_length = extents[1]-extents[0] current_height = extents[3]-extents[2] segs = scale_segs(segs, current_length, length) # translate to final position start_y=-0.5 dy = 1.5*float(length)/float(current_length)*current_height print " row to y= ",start_y+n_row*dy segs = translate(segs, dx, start_y+n_row*dy ) # remove duplicate points segs = modify_segments(segs) return segs if __name__ == "__main__": print ttt.version() #exit() #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() ) scale=1 far = 1 camPos = far
wr.scale = float(1)/float(scale) ttt.ttt(text,wr) segs = wr.get_segments() return segs if __name__ == "__main__": vd = ovd.VoronoiDiagram(1,120) # parameters: (r,bins) # float r = radius within which all geometry is located. it is best to use 1 (unit-circle) for now. # int bins = number of bins for grid-search (affects performance, should not affect correctness) # get segments from ttt. NOTE: must set scale so all geometry fits within unit-circle! segs = ttt_segments( "EMC2", 15000) # (text, scale) all coordinates are divided by scale segs = translate(segs, -0.06, 0.05) segs = modify_segments(segs) times = insert_many_polygons(vd,segs) # insert segments into vd print "( ttt2medial.py - experimental v-carving script )" print "( TTT++",ttt.version()," )" print "( OpenVoronoi",vd.version()," )" print "( VD built in %02.3f seconds )" % ( sum(times)) print "( VD check: ", vd.check(), " )" ovd.PolygonInterior( vd.getGraph() , True ) # filter so that only polygon interior remains ovd.MedialAxis( vd.getGraph() ) # filter so that only medial axis remains ngc_writer.preamble() printMedial( vd ) ngc_writer.postamble()
# scale to desired length current_length = extents[1] - extents[0] current_height = extents[3] - extents[2] segs = scale_segs(segs, current_length, length) # translate to final position start_y = -0.5 dy = 1.5 * float(length) / float(current_length) * current_height print " row to y= ", start_y + n_row * dy segs = translate(segs, dx, start_y + n_row * dy) # remove duplicate points segs = modify_segments(segs) return segs if __name__ == "__main__": print ttt.version() # exit() # 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()) scale = 1 far = 1 camPos = far