ARRAY…EXPONENT
이제부터는 ASAP의 ARRAY 명령어에 포함되어 있는 부가 기능에 대해서 알아보자. 앞에서 알아본 ARRAY는 모든 요소들이 등 간격으로 배치된다. 그런데 ARRAY 명령어 마지막에 있는 EXPONENT 옵션을 사용하면 각 요소들이 배치되는 간격을 지수분포로 배치할 수 있다. 우선 일반적인 2차원 배열을 하나 만들어 보자. 간격이 5인, 5×5의 ELLIPSE 배열을 만들었다. 그림 5.6과 같이 모든 ELLIPSE들이 동일한 간격을 가지고 배열된 것을 확인할 수 있다.
SYSTEM NEW
RESET
SURFACE
PLANE Z 0 ELLIPSE 1 1
ARRAY 4 5 0 0 4 0 5 0
OBJECT ‘DOT_PATTERN’
WINDOW Y –2 22 X –2 22
PLOT FACETS
RETURN
그럼 EXPONENT 옵션을 적용해보자. EXPONENT 옵션은 ARRAY n x y z [EXPONENT p [p’]] 을 통해서 구현되는데, 이것은 배열의 간격에 변화를 줄 수 있다.
ARRAY (ASAP Command) | ||||||||||||
Turns the last surface into a set of identical surfaces.
Syntax ARRAY n x y z [ n’ x’ y’ z’ ] [ EXPONENT p [ p’ ] ] [ RANDOM r ] [ BOUNDS ] SEARCH [ k ]
|
위의 프로그램의 ARRAY 명령어 뒤에 EXPONENT .5 .7 옵션을 추가하여 아래와 같이 코드를 수정해보자.
SYSTEM NEW
RESET
SURFACE
PLANE Z 0 ELLIPSE 1 1
ARRAY 4 5 0 0 4 0 5 0 EXPONENT .5 .7
OBJECT ‘DOT_PATTERN’
WINDOW Y –2 22 X –2 22
PLOT FACETS
RETURN
위의 프로그램을 실행해보면 그림 5.7와 같이 전혀 다른 배열을 가지게 된다. 좌표값이 커지면서 간격이 점점 좁아지는 형태가 되었다. 어떻게 계산된 것일까?
X축의 간격(변화량)을 보면 다음과 같다.
0번째 : 0 + 5*(0^0.5) = 0
1번째 : 0 + 5*(1^0.5) = 5
2번째 : 0 + 5*(2^0.5) = 7.07
3번째 : 0 + 5*(3^0.5) = 8.66
4번째 : 0 + 5*(4^0.5) = 10
즉, 초기값 + 간격*(n^p) 로 계산되는 함수가 된다. Y축에 대해서도 동일한 공식이 적용되는데 Y축의 p’=0.7이다. 그림 5.7을 보면 X축이 0.5이고 Y축이 0.7이어서 X축의 DOT_PATTERN 들이 더 조밀하게 붙어있는 것을 확인할 수 있다.
이 방법은 함수 계산에 의한 것이기 때문에 결과값을 미리 계산해 보는 것이 좋다. 그렇지 않으면 그림 5.7과 같이 의도하지 않게 DOT들이 붙어버리는 경우가 생길 수 있다.