Advertisement
phjoe

MataAngin

Nov 3rd, 2015
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Mata Angin
  2. # joe, 04/11/2015
  3.  
  4. # Ref: Nama Arah dan Derajat Mata Angin
  5. '''
  6. N 348.75 - 11.25
  7. NNE 11.25 - 33.75
  8. NE 33.75 - 56.25
  9. ENE 56.25 - 78.75
  10. E 78.75 - 101.25
  11. ESE 101.25 - 123.75
  12. SE 123.75 - 146.25
  13. SSE 146.25 - 168.75
  14. S 168.75 - 191.25
  15. SSW 191.25 - 213.75
  16. SW 213.75 - 236.25
  17. WSW 236.25 - 258.75
  18. W 258.75 - 281.25
  19. WNW 281.25 - 303.75
  20. NW 303.75 - 326.25
  21. NNW 326.25 - 348.75
  22. '''
  23.  
  24.  
  25. import appuifw as A
  26. import graphics as G
  27. from math import cos,sin,pi
  28.  
  29. radians=lambda x:x*pi/180
  30.  
  31. run=1
  32. def exit():
  33.  global run;run=0
  34.  
  35. A.app.screen='full'
  36. canvas=A.Canvas()
  37. A.app.body=canvas
  38. w,h=canvas.size
  39. img=G.Image.new((w,h))
  40. A.app.exit_key_handler=exit
  41.  
  42. # center x, center y
  43. cx,cy=w/2,h/2
  44.  
  45. # radius lingkaran, 80% dari nilai terkecil antara titik tengah (lebar,tinggi)
  46. r=min(cx,cy)*.80
  47.  
  48. # nama arah mataangin, North, North-north East, North East, dst
  49. dirs=["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"]
  50.  
  51. def wind():
  52.  # offset -90, supaya 0 berada di posisi jam 12, (ingat bahwa 0 derajat dari sebuah lingkaran berada pada posisi jam 3, berputar searah jarum jam)
  53.  
  54.  off=-radians(90)
  55.  
  56.  # loop
  57.  for i in range(N):
  58.   # derajat per bagian, 1 lingkaran = 2 * pi
  59.   dd=(2*pi)/N
  60.  
  61.   # x,y titik arah mata angin
  62.   # x=cos(derajat), y=sin(derajat)
  63.   x=cx+r*cos(dd*i+off)
  64.   y=cy+r*sin(dd*i+off)
  65.  
  66.   img.line((cx,cy,x,y),0xdddd99)
  67.   img.text((x,y),u'%s' %dirs[i],0x999933,'legend')
  68.  
  69. N=len(dirs)
  70. while run:
  71.  img.clear(0xffffdd)
  72.  wind()
  73.  canvas.blit(img)
  74.  A.e32.ao_sleep(1e-04)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement