a. 그림틀의 테두리를 그려주는 페인터
b. 그림틀에서 마주보는 곡짓점을 서로 연결하여 'X’를 그리는 페인터
c. 그림틀의 모서리 가운데 점 네 개를 연결하여 다이아몬드 꼴을 그리는 페인터
d. wave 페인터
문제로 부터 얻은 것
소모한 시간에 비해 얻는 것이 많이 없는 문제였습니다.
처음 문제를 풀 때, segments->painter가 기본으로 구현되어 있는지 몰라서 많이 해맸습니다.
또 segments->painter가 1.0을 최대의 값으로 가진다는 것도 몰라서 다른 풀이들을 봐도 이해가 안되었습니다.
막상 풀고 나니 그렇게 얻은 것은 없는 문제였습니다.
문제풀이
이 문제를 풀기 위해서는, 책에 있는 segments->painter 프로시저를 그대로 사용하면 안됩니다. scheme의 sicp 패키지에는 자체에 내장된 segments->painter와 vect, segment가 있으니 이를 활용해야 합니다.
#lang sicp (#%require sicp-pict)
내장된 프로시저 segments->painter는, 그리고자 하는 선분의 x값과 y값의 최대치가 1.0인 선분을 그릴 수 있습니다. 다시말해, 선분의 좌표가 1.0을 넘어가면 더이상 그리지 않습니다.
a. 그림틀의 테두리를 그려주는 페인터
그림틀의 테두리의 길이는 1로 고정되어 있습니다. 그러니 원점에서 수직 수평으로 뻗은 두 선분과, 각 끝에서 (1,1)로 뻗은 두 선분을 그려주면 됩니다.