Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- def build(layers,radius=10,thickness=1,stroke="black",fill="none",eol='\r\n'):
- size=layers*radius*2+thickness*4
- cx=size/2.0
- cy=size/2.0
- if not callable(stroke):
- _stroke=stroke
- stroke=lambda layer,circle:_stroke
- if not callable(fill):
- _fill=fill
- fill=lambda layer,circle:_fill
- xml='<?xml version="1.0" standalone="no"?>'+eol
- xml+='<!DOCTYPE svg>'+eol
- xml+='<svg version="1.1" width="%i" height="%i">'%(size,size)+eol
- xml+='\t<!-- Center -->'+eol
- 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
- turtle=[5*math.pi/6,cx,cy] #direction,x,y
- layer=1
- while layer<layers:
- xml+='\t<!-- Layer %i -->'%layer+eol
- circle=0
- turtle[2]-=radius
- while circle<6*layer:
- 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
- if circle%layer==0:
- turtle[0]+=math.pi/3
- turtle[1]+=radius*math.cos(turtle[0])
- turtle[2]-=radius*math.sin(turtle[0])
- circle+=1
- layer+=1
- xml+='</svg>'
- return xml
- f=open('fol.svg','w')
- f.write(build(5))
- f.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement