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_01
그림 5.6 일반적인 ARRAY 명령

그럼 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 ]

Option Description
ARRAY elements are associated with an OBJECT
n n’ number of linearly spaced elements
x y z x’ y’ z’ reference point shift
EXPONENT modifies reference point coefficient
p p’ reference point coefficient exponent

 

위의 프로그램의 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

EXPONENT_02
그림 5.7 ARRAY…EXPONENT 명령

위의 프로그램을 실행해보면 그림 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들이 붙어버리는 경우가 생길 수 있다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: