스크래치(Scratch) - 스파이로그래프 하이포트로코이드 그리기
스파이로그래프 Spirograph는 기술적으로 하이포트로코이드 hypotrochoids 및 에피트로코이드 epitrochoids로 알려진 다양한 수학적 룰렛 곡선을 생성하는 기하학적인 드로잉 장난감입니다. 크기가 각각 다른 톱니바퀴와 그 안에 뚫린 구멍에 볼펜을 꽂아 톱니로 이루어진 고정된 원 둘레를 돌리면 아름다운 기하 무늬가 나타난다. 이것은 영국의 엔지니어인 Denys Fisher가 개발했으며 1965 년에 처음 판매되었다.
하이포트로코이드
톱니바퀴를 원의 내부에서 돌릴 때 생기는 모양이다. 톱니바퀴의 반지름을 rr, 톱니바퀴가 내부에서 돌아가는 원의 반지름을 RR, 톱니바퀴의 중심으로부터 궤적을 그리는 점까지 거리를 d라 하면 하이포트로코이드의 매개변수 방정식은
x=(R−r)cosθ+dcos(R−rrθ),y=(R−r)sinθ+dsin(R−rrθ)
이다. 이 방정식을 사용하여 스크래치에서 하이포트로코이드 그림을 그려 보겠다.
방정식을 이용한 하이포트로코이드
매개변수 방정식을 이용하기 때문에 스크래치에서 하이포트로코이드 그림을 그리는것은 어렵지 않다. 단지 방정식이 어렵게 생겼을 뿐이다. 하이포트로코이드 매개변수 방정식에서 두개의 반지름 R, r은 상수이다. θ가 0에서 360으로 변화하는 동안 (x,y)의 자취를 그려주면 그림이 완성된다. 두개의 매개변수 방정식은 sin, cos함수로 되어있다. 스크래치에는 연산블록에는 sin, cos값을 계산하는 블록이 있기 때문에 이를 이용하여 계산하면 된다.
프로그램의 내부에 추가 블록을 이용하여 θ를 변수로 하여 x,y를 계산하는 블록을 연산 블록을 결합하여 만든다. 이 블록을 이용하여 θ를 0.1간격으로 변화를 주며 x,y를 계산하고 스프라이트를 계산된 위치로 이동하며 하이포트로코이드 자취를 그린다.
방정식없이 유사한 하이포트로코이드 그리기
방정식을 이용하면 정확한 하이포트로코이드를 그릴수 있다. 하지만 방정식을 사용하지 않고 하이포트로코이드 그려지는 과정의 움직임을 통하여 유사한 하이포트로코이드를 그려보겠다. 유사한 이라고 붙인 이유는 방정식의 자취와는 완전히 일치하지는 않는 때문이다.
유사한 하이포트로코이드 움직임을 따라 그리는 방법은 원을 그리는 과정을 반복하여 그릴것이다. 우선 스크래치에서 원을 그리는 방법은 움직이기와 회전하기를 반복하여 그릴 수 있다.
먼저 하이포트로코이드에서 톱니바퀴가 돌게 될 큰 원을 먼저 그린후, 톱니바퀴가 돌면서 그려지는 작은 원을 그린다.
여기서 큰원을 그리는 과정을 살펴보면 15만큼 이동하기와 6∘ 회전하를 반복하여 그렸다. 이것을 1회 반복할때 마다 작은원을 그려보겠다.
정확한 하이포트로코이드는 원을 그리는 과정에서 회전이 진행되어야 한다. 하지만 내부의 원이 하나가 그려지는 동안 적은 각의 회전이 이뤄지기 때문에 원을 그린후 회전을 통해 보정을 하여 유사한 하이포트로로코이드 그림을 그렸다. 그림으로만 봐서는 거의 정확한 모습이다.
다음은 방정식을 이용하여 정확히 그린 하이포트로코이드와 유사한 하이포트로코이드를 비교한것이다. 빨간색이 방정식을 이용하여 그린 그림이고 파란색이 유사한 하이포트로코이드 그림이다.
'Scratch' 카테고리의 다른 글
스크래치(Scratch) - 알고리즘: 1부터 10까지 말하기 (0) | 2017.10.17 |
---|---|
스크래치(Scratch) - 동적 리스트 (0) | 2017.10.10 |
스크래치(Scratch) - 리스트 기초 (0) | 2017.10.10 |
스크래치(Scratch) - 복제하기에 대하여 (0) | 2017.10.10 |
스크래치(Scratch) - [게임 01] 사과 받기 게임 (0) | 2017.10.01 |
댓글
이 글 공유하기
다른 글
-
스크래치(Scratch) - 알고리즘: 1부터 10까지 말하기
스크래치(Scratch) - 알고리즘: 1부터 10까지 말하기
2017.10.171부터 10까지 말하기 반복문 이용하여 1~10까지 말하는 프로그램을 만들어 보겠다. 데이터 카테고리에서 변수만들기를 이용하여 자연수 이름의 변수를 만든다. 하여 자연수 변수의 값을 0으로 한다. 를 10번 반복한다. 이번에는 ~까지 반복하기 블록을 사용하여 프로그램을 만들어 보겠다. ~번 반복하기 명령은 반복해야하는 횟수가 상황에 따라 변하지 않고 고정되 있는 경우에 사용한다. 반면에 ~까지 반복하기 명령은 프로그램이 수행되는 동안 상황에 따라 반복횟수를 다르게 하고 싶을때 사용한다. 주의할 점은 ~까지 반복하기 블록을 사용할 때 마지막 반복은 실행되지 않는다는 점을 생각하여 조건을 만들어 줘야한다. 위의 프로그램의 경우 변수 자연수 값이 0, 1, 2, 9 까지 실행되며 10이 되는 순간 반복문이 종… -
스크래치(Scratch) - 동적 리스트
스크래치(Scratch) - 동적 리스트
2017.10.10동적 리스트 리스트는 프로그램이 실행 중일 때 동적으로 확장되거나 축소 될 수 있기 때문에 강력하다. 예를 들어, 교사가 성적 처리 응용 프로그램을 작성하고 있다고 가정 해 보자. 교사는 추가 처리를 위해 학생의 시험 점수를 입력 할 수 있다. (교사는 한 반의 최대 점수, 최소, 평균, 중앙값 등을 찾아야 할 수도 있다.) 그러나 학생 수는 모든 반에 따라 다를 수 있다. 교사는 1반에 20 점, 2반에 25 점을 입력해야 할 수 있다. 교사가 점수 입력을 마쳤다는 것을 프로그램에서 어떻게 처리 할 수 있을까? 먼저 사용자의 데이터로 리스트를 채우는 두 가지 방법을 소개한다. 그런 다음 숫자 목록을 탐색하고 여기에서 수행되는 몇 가지 일반적인 작업을 살펴 본다. 사용자 입력으로 리스트 만들기 사용자가 … -
스크래치(Scratch) - 리스트 기초
스크래치(Scratch) - 리스트 기초
2017.10.10리스트 리스트 만들기 리스트 만드는 것은 변수를 만들기와 거의 동일하다. 데이터 카테고리를 선택하고 리스트 만들기를 클릭하면 다음과 같은 대화 상자가 나타난다. 리스트 이름을 입력하고 해당 범위를 지정한다. 모든 스프라이트에서 사용 옵션을 선택하면 응용 프로그램의 모든 스프라이트가 액세스 할 수 있는 전역 리스트이 생성되는 반면 이 스프라이트에서만 사용 옵션은 현재 선택된 스프라이트에 속한 로컬 리스트을 만든다. 지역 리스트은 소유자 스프라이트에서만 사용할 수 있다. 확인을 클릭하면 스크래치는 새로운 빈 리스트을 만들고 리스트 관련 블록을 표시한다. 이것은 새로운 변수를 만들 때와 비슷하다. 빈 리스트은 항목이 없는 리스트이다.이 새로운 명령을 사용하여 스크립트가 실행되는 동안 리스트의 내용을 조작 할 … -
스크래치(Scratch) - 복제하기에 대하여
스크래치(Scratch) - 복제하기에 대하여
2017.10.10복제하기에 대해 좀더 알아보기 1. 모든 스프라이트는 제어 카테고리 블록에서 블록을 사용하여 자신이나 다른 스프라이트를 복제 할 수 있다. (스테이지는 동일한 블록을 사용하여 스프라이트를 복제 할 수도 있다.) 복제된 스프라이트는 복제된 시점의 원본 상태, 즉 원래의 현재 위치와 방향, 모양, 방향, 펜 색상, 펜 크기, 그래픽 효과를 상속한다. 복제본은 스프라이트의 스크립트도 상속받는다. 2. 아래와 같이 프로그램을 만들어보자. 여기서 원본 스프라이트는 두 개의 클론을 생성한다. 스페이스 바를 누르면 세 개의 스프라이트(마스터와 두 개의 클론)가 오른쪽으로 15° 회전한다. 왜냐하면 모두 스페이스 키를 눌렀을 때 스크립트를 실행하기 때문이다. 3. 다음 프로그램을 고려해보자. 처음 스페이스 바를 누르면…
댓글을 사용할 수 없습니다.