BOUNDS 명령어

ARRAY와 함께 ASAP에서 geometry를 powerful 하게 만드는 또하나의 중요한 명령어가 BOUNDS이다. BOUNDS는 entity를 이용해서 object를 잘라내는(trim) 기능을 가지고 있다.

아래 프로그램은 ELLIPSE에 구멍을 내는 예제이다.

SYSTEM NEW
RESET

EDGE
  ELLIPSE Z
0 .5 .5
  SHIFT .6 .6 0

SURFACE
  PLANE Z 0 ELLIPSE 2 2
OBJECT ‘SURFACE_ELLIPSE’
  FACETS 19 19

BOUNDS
.2

WINDOW Y X
PLOT FACETS
RETURN

BOUNDS 명령이 선언된 바로 앞의 object가 변형의 주체가 되기 때문에, 위의 프로그램에서는 ‘SURFACE_ELLIPSE’에 변형이 발생한다.  BOUNDS .2의 .2는 BOUNDS가 선언된 object로 부터 앞으로 2번째에 선언되어 있는 object를 가리킨다. 즉, EDGE – ELLIPSE를 의미한다.

.1인 ‘SURFACE_ELLIPSE’에 BOUNDS 명령이 적용되었기 때문에 ‘SURFACE_ELLIPSE’에 반경 0.5의 둥근 원(EDGE – ELLIPSE)의 구멍이 생기는 것이다.

Note…
광학적인 특성은 지니지 않으면서 위의 프로그램과 같이 절단을 위한 경계선 정도로 사용하기 위해 만드는 것이 바로 Entity이다. Entity는 형상의 마지막에 OBJECT ‘NAME’ 처럼 OBJECT 명령어와 ‘(작은따음표)’로 구성된 이름을 붙여주지만 않으면 된다.

EDGE – ELLIPSE 는 Entity이기 때문에 PLOT FACETS 명령어로는 보이지 않는다. PLOT FACETS는 OBJECT ‘NAME’ 처럼 Object에 이름이 부여된 것들만 보여주기 때문이다.

BOUNDS_01
그림 6.1 BOUNDS .2의 결과

여기서 BOUNDS .2는 +.2의 의미를 가진다. BOUNDS에 의해 변형되는 형상의 주체는 ‘SURFACE _ELLIPSE’ 이지만 형상을 잘라내는 칼날은 EDGE – ELLIPSE이기 때문에 +의 의미는 EDGE – ELLIPSE의 바깥쪽을 의미하고 이 부분을 “남겨 두라”는 의미가 된다.

BOUNDS_02
그림 6.2 BOUNDS -.2의 결과

그렇다면, BOUNDS -.2 처럼 – (마이너스)를 붙이면 어떻게 될까? 예상대로 EDGE – ELLIPSE의 안쪽 부분에만 ‘SURFACE_ELLIPSE’의 형상이 남게 된다.

Note…
FACETS 19 19의 의미는 OBJECT의 형상을 컴퓨터가 그려줄때 얼마나 정밀하게 그려주는지에 대한 Resolution을 설정 해 주는 부분이다. 이 값이 높으면 높을수록 정밀하게 그려주지만 시간이 오래 걸린다. 그리고, 값이 낮아서 그래픽이 깨진다 하더라도 simultion에서는 전혀 문제가 없다. 즉, 그림이 깨졌다고 simultion이 잘못되는 것은 아니니 너무 걱정할 필요는 없다.

그럼 EDGE – ELLIPSE에도 이름을 부여하여 Entity로 두지말고 Object로 만들면 어떻게 될까?

SYSTEM NEW
RESET

EDGE
  ELLIPSE Z
0 .5 .5
    SHIFT .6 .6 0
OBJECT ‘EDGE_ELLIPSE’

SURFACE
  PLANE Z 0 ELLIPSE 2 2
OBJECT ‘SURFACE_ELLIPSE’
FACETS 19 19

BOUNDS .2

WINDOW Y X
PLOT FACETS
RETURN

이렇게 되면 EDGE – ELLIPSE도 더이상 Entity가 아닌 Object가 되기 때문에 PLOT FACETS에서도 보여지고 광학적인 특성도 가지는 의미있는 면이 된다. 아래 그림 6.3을 보면 EDGE_ELLIPSE도 Object로 되어 있는 것을 볼 수 있다.

BOUNDS_03
그림 6.3 Entity를 Object로 만들기

여기서 한가지 더, 위의 프로그램에서 BOUNDS .2 명령어가 없다면 어떻게 될까?

BOUNDS_04
그림 6.4 BOUNDS .2가 없는 경우의 형상

당연한 얘기겠지만, BOUNDS 명령어가 없으면 2개의 Object가 겹쳐지게 된다. 그리고 BOUNDS 명령어가 있다면 큰 원에 구멍을 내고 작은 원을 끼워넣는 상황이 되어서 2개의 면이 겹쳐지지 않고 각각 하나씩의 면을 가지게 되는 것이고 BOUNDS 명령어가 없다면 서로 겹쳐져서 그림 6.4와 같이 그림이 랜덤하게 겹쳐져 보이는 현상을 보인다.

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: