Advertisement
phjoe

Star v2

Dec 22nd, 2014
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # joe 23/12/2014
  2. # star v2
  3. import appuifw as A
  4. import graphics as G
  5. from math import cos,sin,pi
  6.  
  7. rad=lambda x:x*pi/180.0
  8. run=1
  9. def exit():
  10.  global run
  11.  run=0
  12.  
  13. c=A.Canvas()
  14. A.app.screen='full'
  15. A.app.body=c
  16. w,h=c.size
  17. img=G.Image.new((w,h))
  18. A.app.exit_key_handler=exit
  19.  
  20. def h2r(h,s,v):
  21.  if s==0.0: return v,v,v
  22.  i=int(h*6.0)
  23.  f=(h*6.0)-i
  24.  p=v*(1.0-s)
  25.  q=v*(1.0-s*f)
  26.  t=v*(1.0-s*(1.0-f))
  27.  if i%6==0:return v,t,p
  28.  if i==1:return q,v,p
  29.  if i==2:return p,v,t
  30.  if i==3:return p,q,v
  31.  if i==4:return t,p,v
  32.  if i==5:return v,p,q
  33.  
  34. def gen(n=256):
  35.  hsv=[(x*0.9/n,0.6,0.9) for x in xrange(n)]
  36.  rgb=map(lambda x: tuple(map(lambda x:int(x*255), h2r(*x))),hsv)
  37.  return rgb
  38.  
  39. def star(x,y,r,w,c):
  40.  r1=r*.38
  41.  n=5
  42.  dA=rad(90)
  43.  dB=rad(54)
  44.  v0,v1=[],[]
  45.  for i in range(n):
  46.   x1=x+r*cos((2*pi/n)*i+dA)
  47.   y1=y-r*sin((2*pi/n)*i+dA)
  48.   x2=x+r1*cos((2*pi/n)*i+dB)
  49.   y2=y-r1*sin((2*pi/n)*i+dB)
  50.   v0.append((x1,y1))
  51.   v1.append((x2,y2))
  52.  
  53.  vert = [
  54.   v0[0][0], v0[0][1],
  55.   v1[1][0], v1[1][1],
  56.   v0[1][0], v0[1][1],
  57.   v1[2][0], v1[2][1],
  58.   v0[2][0], v0[2][1],
  59.   v1[3][0], v1[3][1],
  60.   v0[3][0], v0[3][1],
  61.   v1[4][0], v1[4][1],
  62.   v0[4][0], v0[4][1],
  63.   v1[0][0], v1[0][1],
  64.   v0[0][0], v0[0][1]
  65.   ]
  66.  img.polygon(vert,c,width=3)
  67.  
  68. def rot(x,y,z):
  69.  r=min(x,y)*.70
  70.  ra=r*.40
  71.  off=rad(z)
  72.  for i in range(N):
  73.   x2=x+r*cos((2*pi/N)*i+off)
  74.   y2=y+r*sin((2*pi/N)*i+off)
  75.   star(x,y,40,2,warna[i])
  76.   star(x2,y2,15,2,warna[i])
  77.  
  78. i=0
  79. N=15
  80. warna=gen(N)
  81. while run:
  82.  i+=2
  83.  if i>360:i=0
  84.  img.clear(0)
  85.  rot(w/2,h/2,i)
  86.  c.blit(img)
  87.  A.e32.ao_sleep(1E-08)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement