Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Mata Angin
- # joe, 04/11/2015
- # Ref: Nama Arah dan Derajat Mata Angin
- '''
- N 348.75 - 11.25
- NNE 11.25 - 33.75
- NE 33.75 - 56.25
- ENE 56.25 - 78.75
- E 78.75 - 101.25
- ESE 101.25 - 123.75
- SE 123.75 - 146.25
- SSE 146.25 - 168.75
- S 168.75 - 191.25
- SSW 191.25 - 213.75
- SW 213.75 - 236.25
- WSW 236.25 - 258.75
- W 258.75 - 281.25
- WNW 281.25 - 303.75
- NW 303.75 - 326.25
- NNW 326.25 - 348.75
- '''
- import appuifw as A
- import graphics as G
- from math import cos,sin,pi
- radians=lambda x:x*pi/180
- run=1
- def exit():
- global run;run=0
- A.app.screen='full'
- canvas=A.Canvas()
- A.app.body=canvas
- w,h=canvas.size
- img=G.Image.new((w,h))
- A.app.exit_key_handler=exit
- # center x, center y
- cx,cy=w/2,h/2
- # radius lingkaran, 80% dari nilai terkecil antara titik tengah (lebar,tinggi)
- r=min(cx,cy)*.80
- # nama arah mataangin, North, North-north East, North East, dst
- dirs=["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"]
- def wind():
- # 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)
- off=-radians(90)
- # loop
- for i in range(N):
- # derajat per bagian, 1 lingkaran = 2 * pi
- dd=(2*pi)/N
- # x,y titik arah mata angin
- # x=cos(derajat), y=sin(derajat)
- x=cx+r*cos(dd*i+off)
- y=cy+r*sin(dd*i+off)
- img.line((cx,cy,x,y),0xdddd99)
- img.text((x,y),u'%s' %dirs[i],0x999933,'legend')
- N=len(dirs)
- while run:
- img.clear(0xffffdd)
- wind()
- canvas.blit(img)
- A.e32.ao_sleep(1e-04)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement