Advertisement
PiMaster

Flower of Life

Jul 1st, 2012
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.18 KB | None | 0 0
  1. import math
  2.  
  3. def build(layers,radius=10,thickness=1,stroke="black",fill="none",eol='\r\n'):
  4.     size=layers*radius*2+thickness*4
  5.     cx=size/2.0
  6.     cy=size/2.0
  7.     if not callable(stroke):
  8.         _stroke=stroke
  9.         stroke=lambda layer,circle:_stroke
  10.     if not callable(fill):
  11.         _fill=fill
  12.         fill=lambda layer,circle:_fill
  13.     xml='<?xml version="1.0" standalone="no"?>'+eol
  14.     xml+='<!DOCTYPE svg>'+eol
  15.     xml+='<svg version="1.1" width="%i" height="%i">'%(size,size)+eol
  16.     xml+='\t<!-- Center -->'+eol
  17.     xml+='\t<circle cx="%s" cy="%s" r="%s" stroke="%s" stroke-width="%s" fill="%s"/>'%(cx,cy,radius,stroke(0,0),thickness,fill(0,0))+eol
  18.     turtle=[5*math.pi/6,cx,cy] #direction,x,y
  19.     layer=1
  20.     while layer<layers:
  21.         xml+='\t<!-- Layer %i -->'%layer+eol
  22.         circle=0
  23.         turtle[2]-=radius
  24.         while circle<6*layer:
  25.             xml+='\t<circle cx="%s" cy="%s" r="%s" stroke="%s" stroke-width="%s" fill="%s"/>'%(turtle[1],turtle[2],radius,stroke(layer,circle),thickness,fill(layer,circle))+eol
  26.             if circle%layer==0:
  27.                 turtle[0]+=math.pi/3
  28.             turtle[1]+=radius*math.cos(turtle[0])
  29.             turtle[2]-=radius*math.sin(turtle[0])
  30.             circle+=1
  31.         layer+=1
  32.     xml+='</svg>'
  33.     return xml
  34.  
  35. f=open('fol.svg','w')
  36. f.write(build(5))
  37. f.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement