1. Introduction
이번 예제에서는 변수를 활용해서 별 그리기 프로그램의 수정을 좀 더 쉽게 만들어 보겠습니다. 중학 수학에서 다루는 코사인 값 구하기 공식이 적용되었습니다(중3, 2학기 과정 관련 수학 참고서 참고할 것). LOGO는 명령 입력칸에 직접 코사인 값 알아내기 명령을 입력할 수 있습니다.
예.
cos 72(그리고 엔터) ;; 코사인 72의 수치값이 출력됩니다.)
삼각비와 삼각함수는 중학 수학 이상 수준에서는 매우 중요합니다. ^.^;
초등수학 과정에서는 이번 예제에 사용된 cos 72 대신 어림짐작 값을 사용해도 무방합니다만, 직접 이런 저런 값으로 실험해보세요.
2. Code
to main
setup
star12
end
to move1
pu fd :nextto pd
end
to setup
Home CS PPT PD ST
make "side 20
make "r 0.309016994374947 ;; cos 72 = 0.309016994374947
make "w (:side * :r) ;; w = 9.27050983124841
make "x (2 * :w)
make "margin 5
make "nextto (2 * :side) + :x + :margin
pu lt 90 fd 480 rt 90 fd 350 pd rt 90
end
to star1 :side
repeat 5 [ fd :side lt 72 fd :side rt 144 ]
end
to star12
repeat 12 [ star1 :side move1 ]
end
3. Notes
중요한 부분만 살펴보겠습니다.
make "side 20
;; 한 변의 길이를 20으로 결정합니다.
make "r 0.309016994374947 ;; cos 72 = 0.309016994374947
;; 위 코드는 다음과 같이 해도 결과는 동일합니다.
;; make "r (cos 72)
;; 코사인 72의 값을 r 이라는 변수에 저장합니다.
(;; 매우 여러번 실행할 경우, 표현식보다 값을 직접 입력하는 편이 조금이라도 속도가 빠릅니다.)
;; 코사인 72도의 값은 FMSLogo 명령행에서 직접 구합니다. cos 72(엔터). ^.^;
;; 코사인 72도의 값은 빗변 :side값을 기준으로 밑변 w의 길이값을 의미합니다. 분수로 표현.
;; w/:side. 여기서 슬래시(/)는 나눗셈을 의미합니다.
make "w (:side * :r) ;; w = 9.27050983124841
;; w/20 = 0.309016994374947
;; 정리하면,
;; w = 0.309016994374947 * 20 (여기서 별표*는 곱셈을 의미합니다)
;; w = 9.27050983124841
make "x (2 * :w)
;; 별의 양 날개 사이의 간격은 w가 2개 크기입니다. 변수 x에 2w 값을 저장합니다.
make "margin 5
;; 별과 별 사이의 간격, 보통은 20으로 합니다만 여기서는 줄여서 5 정도로만 합니다.
;; 별의 갯수가 많으면 간격도 조정해야 합니다.
make "nextto (2 * :side) + :x + :margin
;; 별 하나를 그리고 옆으로 이동할 때의 이동 거리를 계산합니다.
;; 계산 후에 nextto라는 변수에 이동 거리를 저장합니다.
;; :x 값이 어떻게 결정되는지 알아야 합니다.
4. Result
5. Files
6. Ref.
1) 중학 3학년 수학책.
2) Pass. ^.^;
Happy Programming!
^.^;
'Programming > LOGO' 카테고리의 다른 글
LOGO : 변수(Variables) - 9, Coloring (1) (0) | 2024.04.26 |
---|---|
LOGO : 변수(Variables) - 8 (0) | 2024.04.21 |
LOGO 변수(Variables) - 6 (0) | 2024.03.25 |
LOGO : 변수(Variables) - 5 (0) | 2024.03.17 |
LOGO : 변수(Variables) - 4 (0) | 2024.03.14 |