본문 바로가기
엔트리메뉴/엔트리코딩시험-알고리즘

엔트리-코흐눈송이(Koch Snowflake) 그리기

by flycoding 2022. 8. 30.
반응형

엔트리 -코흐눈송이(Koch Snowflake) 그리기

 

엔트리 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.

 

프랙탈에 종류에 시어핀스키 삼각형과 다각형을 엔트리로 그려보았다.

 

 

엔트리-시어핀스키다각형그리기

 

 

본 글에서는 엔트리로 프랙탈의 한 종류인 코흐눈송이(Koch Snowflake)을 그려보자.

코흐눈송이란 프랙탈 도형 가운데 하나로 정삼각형을 그린 후, 각 변을 삼등분하고, 한 변의 길이가 이 삼등분의 길이와 같은 정삼각형을 붙이는 일을 무한히 반복하여 얻은 도형이다.

 

엔트리-코흐눈송이 레벨별 모양

 

 

아래 그림은 엔트리로 코흐눈송이(Koch snowflask) 그린 실행화면이다.

 

엔트리-코흐눈송이 실행화면 예제

 

요구사항

* 코흐눈송이 길이를 입력받는다.

* 코흐눈송이 레벨을 입력받는다.

 

* 변수 

  - 길이 : 코흐눈송이 길이를 입력받아 저장한다.

  - 레벨 : 코흐눈송이 레벨을 입력받아 저장한다.

 

* 코흐눈송이 함수를 정의한다.

  - 코흐눈송이 길이를 인자로 받는다.

  - 코흐눈송이 레벨을 인자로 받는다.

 

   - 레벨이 0보다 크면

     . 코흐눈송이(len/3, level-1)

      .60도 회전하기(시계반대방향)

     . 코흐눈송이(len/3, level-1)

      .120도 회전하기(시계방향)

     . 코흐눈송이(len/3, level-1)

      .60도 회전하기(시계반대방향)

 

분석 및 설계

. 변수만들기

  - 길이 : 코흐눈송이 길이를 저장한다.

  - 레벨 : 코흐눈송이 레벨을 저장한다.

 

. 초기화

  . 펜 올리기

  . 펜 색깔 검정색

  . 모두 지우기

  . len 리스트 항목 모두 지우기(디버깅 목적)

  . 스프라이트 (0,0) 위치로 이동하기

  . 90도 방향보기

  . 묻고 기다리기(코흐눈송이  길이)

  . 길이 변수에 '대답' 정하기

  . 묻고 기다리기(코흐눈송이 레벨)

  . 레벨 변수에 '대답' 정하기

 

. 코흐눈송이(길이, 레벨)

   - 레벨이 0보다 크면

     . 코흐눈송이(len/3, level-1)

      .60도 회전하기(시계반대방향)

     . 코흐눈송이(len/3, level-1)

      .120도 회전하기(시계방향)

     . 코흐눈송이(len/3, level-1)

      .60도 회전하기(시계반대방향)

 

블럭코딩

. 초기화
  . 펜관련 초기화 : 펜 색깔, 모두 지우기
  . 스크래치 위치 초기화 : (0,0) 위치로 이동하기, 90도 방향보기, 크기 10%로 정하기
  . 길이 변수 묻고대답하기로 정한다.
  . 레벨 변수 묻고대답하기로 정한다.

 

엔트리-코흐눈송이 초기화 블럭들

 

. 코흐눈송이 함수 호출하기
  - 3회 반복하기
  - 코흐눈송이(길이, 레벨)
  - 120도 돌기

 

엔트리-코흐눈송이 함수 호출

 

. 코흐눈송이(len, level)
   - 레벨이 0보다 크면
     . 코흐눈송이(len/3, level-1)
      .60도 회전하기(시계반대방향)
     . 코흐눈송이(len/3, level-1)
      .120도 회전하기(시계방향)
     . 코흐눈송이(len/3, level-1)
      .60도 회전하기(시계반대방향)
  - 레빌이 0이면
    . len 만큼 움직이기

 

엔트리-코흐눈송이 함수 정의

 

* 실행 결과물

엔트리의 코흐눈송이 도형의 길이를 입력받는다. 예제에서는 150을 입력하였다.

 

엔트리-코흐눈송이 길이 입력 실행화면

 

 

엔트리의 코흐눈송이 레벨을 입력한다. 예제에서는 레벨을 3 입력한다.

 

엔트리-코흐눈송이 레벨이력 실행화면

 

아래 그림은 코흐눈송이 도형 실행 결과 화면이다.

 

엔트리-코흐눈송이 실행결과 화면

 

엔트리로 작성한 코흐눈송이 도형은 프랙탈 도형을 블록코딩 작성해보았다. 레벨에 따라 코흐눈송이 결과가 다르게 출력이 된다.

재귀함수를 이제 3번째 활용하고 있다. 실행되는 원리 및 특히 재귀함수의 인자값의 변화를 추적하면 재귀함수의 원리를 파악하는데 도움이 될 것이다.

 

다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다. 

앞으로의 여러분의 모습을 기대합니다.

 

Just Do it!!!

Just Drag&Drop!!!

 

MagneticFieldSen

 

반응형

댓글