EDGE로 BOUNDS 하기
Object를 잘라내는 기능을 하는 EDGE에 대해서 좀 더 알아보자. 아래 프로그램은 EDGE와 SURFA CE가 같은 평면(Z=0)에 위치하고 있고, BOUNDS로 잘라내기를 하고 있다.
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
그런데, EDGE가 Z=0이 아닌 다른 좌표에 있어도 구멍을 만들 수 있을까? EDGE를 Z축으로 평행이동시켜 Z=1을 만들어 보았다. 아래 프로그램을 실행시켜 보자.
SYSTEM NEW
RESET
EDGE
ELLIPSE Z 0 .5 .5
SHIFT Z 1 !! Z축으로 1만큼 이동
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
EDGE와 SURFACE가 같은 높이에 있지 않아도 구멍이 생겼다. 그럼 이번에는 EDGE를 살짝 돌려보자.
EDGE
ELLIPSE Z 0 .5 .5
SHIFT .6 .6 0
ROTATE X 45 !! X축으로 45도 회전
SURFACE
PLANE Z 0 ELLIPSE 2 2
OBJECT ‘SURFACE_ELLIPSE’
FACETS 19 19
BOUNDS .2
그림 6.6을 보면 어떻게 BOUNDS가 되는지 바로 알 수 있을 것이다. 즉, EDGE에 수직하게 BOUNDS가 이루어 진다는 것을 알 수 있다.
EDGE에 수직한 방향으로 BOUNDS가 이루어진다면 다른 OBJECT에도 영향을 미치지는 않을까 생각할 수 있을 것이다.
SYSTEM NEW
RESET
EDGE
ELLIPSE Z 0 .5 .5
SHIFT .6 .6 0
ROTATE X 45
SURFACE !! Z=-0.5에 새로운 OBJECT 추가
PLANE Z –0.5 ELLIPSE 2 2
OBJECT ‘SURFACE_ELLIPSE1’
FACETS 19 19
SURFACE
PLANE Z 0 ELLIPSE 2 2
OBJECT ‘SURFACE_ELLIPSE2’
FACETS 19 19
BOUNDS .3 !! .2를 .3으로 수정하여 EDGE를 가리켜야 함.
!! .1 = SURFACE_ELLIPSE2
!! .2 = SURFACE_ELLIPSE1
!! .3 = EDGE
WINDOW Y X
PLOT FACETS
RETURN
위의 프로그램은 EDGE와 ‘SURFACE_ELLIPSE2’ 사이에 새로운 Object인 ‘SURFACE_ELLIPSE1’을 추가하였다. 그리고 BOUNDS를 진행하면 Z=0에 있는 ‘SURFACE_ELLIPSE2’에는 구멍이 생겼지만, Z=-0.5에 있는 ‘SURFACE_ELLIPSE1’에는 아무런 변화가 없다. 이것으로 BOUNDS 명령어는 바로 앞에있는 Object에만 제한적으로 적용된다는 것을 알 수 있다.