YesCoding

search:

Canvas API 3 - μΊ”λ²„μŠ€μ— 원 그리기

MDN + 기타 μžλ£Œλ“€μ„ κ³΅λΆ€ν•˜λ©° μ΄ν•΄ν•œ λ‚΄μš©μ„ μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.

곑선을 그릴 쀄 μ•Œμ•„μ•Ό, 원도 그리고 μ›μœΌλ‘œ λ§Œλ“€ 수 μžˆλŠ” λ§Žμ€ 것듀을 그릴 수 μžˆλ‹€. κ·Έ 기본은 호λ₯Ό κ·Έλ¦¬λŠ” 것이닀.

arc()

μΊ”λ²„μŠ€ <canvas>에 원을 그릴 λ•Œ μ‚¬μš©λ˜λŠ” λ©”μ†Œλ“œμ΄λ‹€. context λŠ” '2D'이닀.

arc(x, y, radius, startAngle, endAngle, anticlockwise)

(x, y)μœ„μΉ˜μ— 원점을 λ‘λ©΄μ„œ, λ°˜μ§€λ¦„ r을 가지고, startAngle μ—μ„œ μ‹œμž‘ν•˜μ—¬ endAngle μ—μ„œ λλ‚˜λ©° 주어진 anticlockwise λ°©ν–₯(mdn μ„€λͺ…이 μ’€ μ–΄λ €μš΄λ°, μ‹œκ³„λ°©ν–₯으둜 호λ₯Ό 그릴지 μ•„λ‹ˆλ©΄ λ°˜μ‹œκ³„λ°©ν–₯으둜 그릴지λ₯Ό λ„£λŠ” κ°’μœΌλ‘œ, boolean νƒ€μž…μ΄λ©° 기본값은 μ‹œκ³„λ°©ν–₯이닀.)으둜 κ°€λŠ” 호λ₯Ό 그리게 λœλ‹€.

μ—¬κΈ°μ„œ μ–΄λ €μ› λ˜ κ°œλ…μ΄ startAngle κ³Ό endAngle 인데, μ—¬κΈ° λ“€μ–΄κ°€λŠ” 값은 각이 μ•„λ‹ˆλΌ λΌλ””μ•ˆ 값이닀.

λΌλ””μ•ˆ κ°’μ΄λž€?

ν”νžˆ μš°λ¦¬κ°€ μƒκ°ν•˜λŠ” 각은 45도, 60도 둜 ν‘œν˜„ν•˜λŠ” '60뢄법 도'λ‹¨μœ„μ΄λ‹€. κ·ΈλŸ¬λ‚˜ 각을 λ‚˜νƒ€λ‚΄λŠ” 또 λ‹€λ₯Έ λ‹¨μœ„κ°€ μžˆλŠ”λ°, μ›μ˜ λ°˜μ§€λ¦„μ— λŒ€ν•œ 호의 길이의 λΉ„λ‘œ μ •μ˜ν•˜λŠ” λΌλ””μ•ˆ λ‹¨μœ„μ΄λ‹€.

λΌλ””μ•ˆμ„ 더 μ•Œμ•„λ³΄κΈ° 전에, 파이 PI κ°œλ…μ— λŒ€ν•΄ 짚고 λ„˜μ–΄κ°€μ•Ό ν•œλ‹€.

파이 (Ο€) λŠ” μ›μ˜ 지름 λŒ€λΉ„ μ›μ˜ λ‘˜λ ˆμ˜ λΉ„μœ¨μ΄λ‹€. μ›μ˜ 지름 길이와 상관없이 κ·Έ λΉ„μœ¨μ€ λ™μΌν•œ 3.14159.. 이기 λ•Œλ¬Έμ— μƒμˆ˜μ΄λ‹€. javascript μ—μ„œλŠ” Math.PI둜 ν˜ΈμΆœν•  수 μžˆλ‹€.

λ‹€μ‹œ λΌλ””μ•ˆμœΌλ‘œ λŒμ•„μ™€μ„œ, 지름은 μ›μ˜ ν•œ μͺ½ λμ—μ„œ 원을 κ΄€ν†΅ν•˜μ—¬ λ°˜λŒ€ 끝으둜 뻗어진 직선이닀. 원 μ•ˆμ—μ„œ 180λ„λ‘œ 원 쀑앙을 κ΄€ν†΅ν•˜λŠ” 직선을 ν˜Έλ„λ²•μœΌλ‘œ 각을 재보면 180도이닀. μ•„κΉŒ 파이 κ°œλ…μ„ 봀을 λ•Œ, 지름 λŒ€λΉ„ μ›μ˜ λ‘˜λ ˆκ°€ νŒŒμ΄μ΄λ―€λ‘œ, 180도 = 파이 λΌλ””μ•ˆ μž„μ„ μ•Œ 수 μžˆλ‹€. (360도 = 2 * 파이 λΌλ””μ•ˆ, 90 도 = 파이 / 2 λΌλ””μ•ˆ)

radian

Javascript μ—μ„œ 도 (degree)μ—μ„œ λΌλ””μ•ˆ (radian)으둜 λ³€ν™˜ν•˜λŠ” 곡식은 λ‹€μŒκ³Ό κ°™λ‹€.

1radian = (Math.PI/180)*degrees

arc() 둜 κ°„λ‹¨νžˆ 호λ₯Ό κ·Έλ €λ΄€λ‹€.

drawing arcs with canvas

Reference

https://ko.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-angular-movement/a/angles-and-units

Β© Copyright 2022, yesCoding