더북(TheBook)

1.5.31 스피로그래프(spirograph). 명령 줄 인수로 R, r, a 파라미터를 입력받아 스피로그래프를 그리는 프로그램을 작성하라. 스피로그래프(엄밀히 말해 외파선(epicycloid))는 반지름 R인 고정된 큰 원 주위를 반지름 r인 작은 원이 굴러가면서 생성하는 곡선을 말한다. 펜의 위치가 회전하는 원의 중점에서 a만큼 떨어져 있다면 시각 t를 기준으로 생성되는 곡선은 다음과 같다.

x(t) = A(R + r)cos(t) - (r + a)cos((R + r) t / r)

y(t) = (R + r)sin(t) - (r + a)sin((R + r) t / r)

스피로그래프 곡선은 톱니 모양의 테두리를 가진 원반에 볼펜을 대고 스피로그래프를 그릴 수 있게 해주는 장난감 덕분에 많이 알려져 있다.

 

1.5.32 시계. 아날로그 시계의 초침, 분침, 시침을 애니메이션하는 프로그램을 작성하라. stddraw.show(1000)를 호출하면 대략 1초에 한 번씩 화면을 갱신할 수 있다.

 

1.5.33 오실로스코프. 오실로스코프를 흉내 내 리사주 패턴(Lissajous pattern)을 만드는 프로그램을 작성하라. 이 패턴의 이름은 서로 직각으로 동시에 발진하는 두 개의 주기적인 파장에 의해 일어나는 패턴을 연구한 프랑스 물리학자 쥘 앙투안 리사주(Jules A. Lissajous)의 이름을 따서 붙여졌다. 입력이 사인 곡선이라면 다음과 같은 매개변수 방정식으로 곡선을 표현할 수 있다.

 

 

명령 줄에서 진폭 AxAy, 각속도 wxwy, 위상 요소 𝜃x𝜃y, 총 6개의 인수를 입력받아라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.