본문 바로가기
Programming/LOGO

LOGO : 변수(Variables) - 11 - 눈꽃송이SnowFlake.

by The Programmer 2024. 5. 12.

1. Introduction

 

눈꽃송이 만들기 예제입니다. 반복 패턴의 변형 응용 유형입니다. 이런 도형은 어떻게 만들까 생각해보는 시간이 되었으면 합니다.

 

함수 뒤에 오는 값(예를 들면, fd 100 할 때, 100과 같은 값, fd도 함수입니다. ^.^; 내장함수. )을 파라미터parameter 또는 아규먼터argument라고 합니다. 둘은 약간의 의미 차이는 있습니다만 여기서는 무시합니다. 한국어로도 알아두면 좋겠습니다.

 

- 파라미터parameter : 매개변수.

- 아규먼트argument : 인수 또는 인자.

 

이번 예제에서는 파라미터 변수와 인수값을 주로 사용하고 있습니다. 사용 방법이 중요할 듯합니다. 변수를 만드는 전통적인 방식, make "변수 변수값 지정 방식이 아닌 다른 방식으로 변수를 만들고 값을 지정하고 사용까지 합니다. 이 방법은 중요합니다.

 

먼저 가지 하나를 만들고 가지를 모아서 줄기를 만들고 줄기를 모아서 잎을 만들고 잎을 모아서 꽃을 만들고... 하는 방식을 보여주고 있습니다. 작은 것을 모아서 큰 것을, 가장 단순한 것을 모아서 엄청 복잡한 것들을 만드는 방식입니다. 세상을 구성하고 있는 사물의 이치와 닮았습니다.

 

 

2. Code.

 

;; 일단 코드만.

 

to justBranch :length
    fd :length
    pu back :length pd
end

to draw
    iSnowFlake 
    HT
end

to iSnowFlake
    repeat 6 [ leaf  pu back 40 rt 60 fd 40 pd ]
    pu back 40 pd
    circle 35
end

to leaf
    fd 150 pu back 37.5 pd    ;; 150 그리고(draw), 후진 이동.
    vBranch 30 back 37.5    ;; 30, 50, 25가 각각 파라미터 변수 length의 실제값(argument, 인수)으로 사용됨.
    vBranch 50 back 37.5
    vBranch 25 back 37.5
end

to main
    setup    
    draw

    ;; 보통 여기 코드의 마지막에 있던 HT는 draw 함수로 이전되었습니다.

    ;; 결과는 동일하다고 생각됩니다.
end

to setup
    Window Home CS PPT PD ST
    SetFloodColor [ 0 0 0 ] Fill   ;; 이 색깔은 아무것도 영 안 보이는 색입니다. ^.^;
    SetPenColor [ 255 255 255 ]    ;; 이 색상은 지금쯤 백살공주님이 좋아하시는 색상입니다. ^.^;

    SetPenSize 10
end

to vBranch :length    ;; 파라미터 변수 정의. 왼쪽 오른쪽 양쪽으로 가지를 그려 v자 모양이 되게 그립니다.
    lt 45 justBranch :length
    rt 90 justBranch :length
    lt 45
end

 


3. Result

 

실행 결과는 대략 다음과 같습니다.

[ 그림 11-1. 단순Simple 눈꽃송이SnowFlake ]



4. Notes.

1) branch가 모여서 vbranch를 만들고 vbranch가 모여서 leaf를 만듭니다. 이 leaf를 모아서 iSnowFlake를 만듭니다. 

 

2) 변수 length값을 받아서 그 길이만큼 justBranch를 그립니다.

 

3) justBranch 2개를 모아서 vBranch를 만들고 줄기와 vBranch 3개를 모아서 잎leaf을 만듭니다.

 

4) 이 잎leaf을 6개 반복하고 가운데 원형 고리를 추가해서 눈꽃송이iSnowFlake를 만듭니다. 

 

5) main 함수는 setup 함수와 draw 함수 딱 2개만으로 간단하게 구성합니다. 이렇게 하는 것이 좋겠습니다.

 

아두이노Arduino나 프로세싱Processing, 유니티Unity 프로그래밍 할 때의 구성과 비슷한 느낌입니다. 업데이트 부분을 추가해서 애니메이션처럼 만들면 정말 비슷할 듯 합니다. 애니메이션 구성은 지금은 일단 패스! ^.^;

 

 

5. Files

파라미터 변수를 활용하는 눈꽃송이 예제 소스코드 파일입니다.

 

Ch_03_Variable_Ex_012_SnowFlake_v1_.lgo
0.00MB

 

 

6. Ref.

1) 참고 : 파라미터paramenter와 아규먼트argument의 차이.

https://m.blog.naver.com/PostView.naver?blogId=human_intelligence&logNo=221725465704

 

 

Happy Programming!
^.^;