def main(): color = ColorScheme("colorbrewer.json") available = [d["name"] for d in color.info()] args = parseArguments(sys.argv, available) # Sanity checks for c in [args.c1, args.c2, args.c3]: if c == 0: print("Error: curvature or radius can't be 0") exit(1) if impossible_combination(args.c1, args.c2, args.c3): print("Error: no apollonian gasket possible for these curvatures") exit(1) # Given curvatures were in fact radii, so take the reciprocal if args.radii: args.c1 = 1 / args.c1 args.c2 = 1 / args.c2 args.c3 = 1 / args.c3 ag = ApollonianGasket(args.c1, args.c2, args.c3) # At a recursion depth > 10 things start to get serious. if args.depth > 10: if not args.force: print( "Note: Number of cicles increases exponentially with 2*3^{D+1} at depth D.\nIf you want to use D>10, specify the --force option." ) args.depth = 10 ag.generate(args.depth) # Get smallest and biggest radius smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) # Construct color map if args.color == "none": mp = ColorMap("none") else: # TODO: resolution of 8 is hardcoded, some color schemes have # resolutions up to 11. Make this configurable. mp = color.makeMap(smallest, biggest, args.color, 8) svg = ag_to_svg(ag.genCircles, mp, tresh=args.treshold) # User supplied filename? If not, we need to construct something. if len(args.output) == 0: args.output = "ag_%.4f_%.4f_%.4f.svg" % (args.c1, args.c2, args.c3) with open(args.output, "w") as f: f.write(svg) f.close()
def main(): color = ColorScheme("colorbrewer.json") available = [d['name'] for d in color.info()] args = parseArguments(sys.argv, available) # Sanity checks for c in [args.c1, args.c2, args.c3]: if c == 0: print("Error: curvature or radius can't be 0") exit(1) if impossible_combination(args.c1, args.c2, args.c3): print("Error: no apollonian gasket possible for these curvatures") exit(1) # Given curvatures were in fact radii, so take the reciprocal if args.radii: args.c1 = 1 / args.c1 args.c2 = 1 / args.c2 args.c3 = 1 / args.c3 ag = ApollonianGasket(args.c1, args.c2, args.c3) # At a recursion depth > 10 things start to get serious. if args.depth > 10: if not args.force: print( "Note: Number of cicles increases exponentially with 2*3^{D+1} at depth D.\nIf you want to use D>10, specify the --force option." ) args.depth = 10 ag.generate(args.depth) # Get smallest and biggest radius smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) # Construct color map if args.color == 'none': mp = ColorMap('none') else: # TODO: resolution of 8 is hardcoded, some color schemes have # resolutions up to 11. Make this configurable. mp = color.makeMap(smallest, biggest, args.color, 8) svg = ag_to_svg(ag.genCircles, mp, tresh=args.treshold) # User supplied filename? If not, we need to construct something. if len(args.output) == 0: args.output = 'ag_%.4f_%.4f_%.4f.svg' % (args.c1, args.c2, args.c3) with open(args.output, 'w') as f: f.write(svg) f.close()
def main(c1=3.,c2=2.,c3=2.,depth=5): # Sanity checks for c in [c1, c2,c3]: if c == 0: print("Error: curvature or radius can't be 0") exit(1) if impossible_combination(c1, c2, c3): print("Error: no apollonian gasket possible for these curvatures") exit(1) ag = ApollonianGasket(c1, c2, c3) ag.generate(depth) # Get smallest and biggest radius smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) return ag.genCircles
# c1 = 1/ccc[0] # c2 = 1/ccc[1] # c3 = 1/ccc[2] c1=ccc[0] c2=ccc[1] c3=ccc[2] ag = ApollonianGasket(c1,c2,c3) # At a recursion depth > 10 things start to get serious. # if args.depth > 10: # if not args.force: # print("Note: Number of cicles increases exponentially with 2*3^{D+1} at depth D.\nIf you want to use D>10, specify the --force option.") # args.depth = 10 ag.generate(depth) # Get smallest and biggest radius smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) # Construct color map # if args.color == 'none': mp = ColorMap('none') # else: # # TODO: resolution of 8 is hardcoded, some color schemes have # # resolutions up to 11. Make this configurable. # mp = color.makeMap(smallest, biggest, args.color, 8) # plt.figure(figsize=(18,18)) # ax=plt.subplot(aspect='equal') # fig,ax=
# c1 = 1/ccc[0] # c2 = 1/ccc[1] # c3 = 1/ccc[2] c1 = ccc[0] c2 = ccc[1] c3 = ccc[2] ag = ApollonianGasket(c1, c2, c3) # At a recursion depth > 10 things start to get serious. # if args.depth > 10: # if not args.force: # print("Note: Number of cicles increases exponentially with 2*3^{D+1} at depth D.\nIf you want to use D>10, specify the --force option.") # args.depth = 10 ag.generate(depth) # Get smallest and biggest radius smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real) # Construct color map # if args.color == 'none': mp = ColorMap('none') # else: # # TODO: resolution of 8 is hardcoded, some color schemes have # # resolutions up to 11. Make this configurable. # mp = color.makeMap(smallest, biggest, args.color, 8) # plt.figure(figsize=(18,18)) # ax=plt.subplot(aspect='equal') # fig,ax=