Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import appuifw as A
- import graphics as G
- import math
- ''' Koch Square + Sierpinski Triangle '''
- lock,run=A.e32.Ao_lock(),1
- w,h=G.sysinfo.display_pixels()
- img=G.Image.new((w,h))
- def exit():
- lock.signal()
- def draw(x):
- if img:canvas.blit(img)
- A.app.screen='full'
- canvas=A.Canvas(redraw_callback=draw)
- A.app.body=canvas
- A.app.exit_key_handler=exit
- def triangle(x0,y0,x1,y1,x2,y2):
- a=math.sqrt((x1-x0)**2 + (y1-y0)**2)
- b=math.sqrt((x2-x1)**2 + (y2-y1)**2)
- c=math.sqrt((x0 - x2) ** 2 + (y0 - y2) ** 2)
- if (a < 2) or (b < 2) or (c < 2): return
- x3=(x0+x1)/2
- y3=(y0+y1)/2
- x4=(x1+x2)/2
- y4=(y1+y2)/2
- x5=(x2+x0)/2
- y5=(y2+y0)/2
- img.line([(int(x3), int(y3)),(int(x4), int(y4))], color)
- img.line([(int(x4), int(y4)),(int(x5), int(y5))], color)
- img.line([(int(x5), int(y5)),(int(x3), int(y3))], color)
- canvas.blit(img)
- triangle(x0,y0,x3,y3,x5,y5)
- triangle(x3,y3,x1,y1,x4,y4)
- triangle(x5,y5,x4,y4,x2,y2)
- def square(ax,ay,bx,by):
- f=math.sqrt((bx-ax)**2 + (by-ay)**2)
- if f < 1:return
- f3=f/3
- cs=(bx-ax)/f
- sn=(by-ay)/f
- cx=ax+cs*f3
- cy=ay+sn*f3
- h=f3*math.sqrt(3)/2
- dx=(ax+bx)/2+sn*h
- dy=(ay+by)/2-cs*h
- ex=bx-cs*f3
- ey=by-sn*f3
- triangle(cx,cy,dx,dy,ex,ey)
- square(ax,ay,cx,cy)
- square(cx,cy,dx,dy)
- square(dx,dy,ex,ey)
- square(ex,ey,bx,by)
- cw=ch=w/2
- r=cw
- off=270.0*math.pi/180
- a = (2 * math.pi / 3)
- color=0xfffeef
- img.clear(0)
- for k in range(3):
- x0=cw+r*math.cos(a*k+off)
- y0=ch+r*math.sin(a*k+off)
- x1=cw+r*math.cos(a*(k+1)+off)
- y1=ch+r*math.sin(a*(k+1)+off)
- square(x0,y0,x1,y1)
- x2=cw+r*math.cos(a+off)
- y2=ch+r*math.sin(a+off)
- triangle(x0,y0,x1,y1,x2,y2)
- img.save(u'e:\\kochsierpinski.png')
- lock.wait()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement