BOUNDS 모아두기

2개의 ELLIPSE와 하나의 TUBE를 통해 렌즈를 하나 만들어보자. 우선 필요한 요소들을 배치해보자.

SYSTEM NEW
RESET

SURFACE
  OPTICAL Z
0 70 ELLIPSE 25 25
OBJECT ‘LENS_FRONT’

SURFACE
  OPTICAL Z
10 70 ELLIPSE 25 25
OBJECT ‘LENS_BACK’     

SURFACE
  TUBE Z
0 20 20 10 20 20
OBJECT ‘LENS_SIDE’

WINDOW Z X  
PLOT FACETS   
RETURN

위의 프로그램으로 렌즈에 필요한 Front, Back, Side의 총 3면에 대한 object를 만들었다. 그림 6.8은 결과를 편하게 확인하기 위해 그림판에서 약간 수정하였다.

SHORT_01
그림 6.8 Lens에 필요한 Objects

이제 필요없는 부분을 제거하여 완전한 렌즈형상을 만들어보자. LENS_FRONT는 TUBE와 만나기 때문에 LENS_FRONT와 TUBE를 하나의 SURFACE에 넣고 TUBE를 칼로 사용하여 LENS_FRONT를  BOUNDS 해야 한다.

SURFACE
  TUBE Z 0 20 20 10 20 20
  OPTICAL Z 0 70 ELLIPSE 25 25
OBJECT ‘LENS_FRONT’
  BOUNDS  .2

이렇게 하면 LENS_FRONT의 바깥부분이 잘려진것을 확인할 수 있다.

SHORT_02
그림 6.9 LENS_FRONT 잘라내기

동일한 방법으로 LENS_BACK의 바깥부분도 잘라내기 하자.

SURFACE
  TUBE Z 0 20 20 10 20 20
  OPTICAL Z 10 70 ELLIPSE 25 25
OBJECT ‘LENS_BACK’
   BOUNDS  .2

마지막으로 TUBE도 잘라내기 해야 하는데, 이때는 LENS_FRONT와 LENS_BACK이 모두 필요하다.

SURFACE
  OPTICAL Z
0    70 ELLIPSE 25 25
  OPTICAL Z 1070 ELLIPSE 25 25 
  TUBE Z 0 20 20 10 20 20
OBJECT ‘LENS_SIDE’
BOUNDS  .2 .3

SHORT_03
그림 6.10 완성된 LENS 형상

LENS 형상을 만들었다면, 프로그램을 한번 보자. 똑같은 코드들이 계속 반복되고 있다. 아무리 봐도 불필요한 것들이 잔뜩 들어있는것 같다. 뭐 좋은 방법이 없을까?

이럴 경우에 사용되는 방법이 바로 object에 이름을 붙이는 위치를 조절하는 것이다. 프로그램을 아래와 같이 수정해 보자.

SYSTEM NEW
RESET

SURFACE 
  OPTICAL Z
0 70 ELLIPSE 25 25
  OPTICAL Z 10 70 ELLIPSE 25 25
  TUBE Z 0 20 20 10 20 20                              
OBJECT 
  .3 ‘LENS_FRONT’      
  BOUNDS  .1

OBJECT 
  .2 ‘LENS_BACK’      
  BOUNDS  .1

OBJECT 
  .1 ‘LENS_SIDE’      
  BOUNDS  .2  .3

WINDOW Z X  
PLOT FACETS   
RETURN

SURFACE 아래에 Lens를 구성하는 3개의 형상을 모두 만들어 놓자. 그러나 아직 OBJECT ‘NAME’과 같이 이름을 부여하지는 않았다. 이렇게 되면 이것들은 아직 object가 되지 못하고 entity로 남아있게 된다. 형상을 만들었으면 이제부터 원하는 형상에만 이름을 부여하여 object로 만들 수 있다. 즉, SURFACE 명령어로 entity 형상을 만들고 난 다음에 OBJECT 명령어를 통해 entity를 object로 만드는 것이다. 그런 다음 아래와 같이 ‘LENS_FRONT’라는 이름을 따로 부여해 준다.

OBJECT
  .3 ‘LENS_FRONT’
  BOUNDS  .1

이렇게 되면 .3인 첫번째 형상만 ‘LENS_FRONT’라는 이름을 가지는 object가 된다. OBJECT 명령어 다음 줄에(줄바꿈) .3 ‘LENS_FRONT’ 명령어를 입력해야 한다. 이 부분은 ‘4.9장 Edge로 Object 만들기’에서 이미 알아보았다. 그리고 BOUNDS -.1 명령어를 통해서 .3인 ‘LENS_FRONT를 .1인 TUBE 칼을 통해 TUBE의 안쪽(-)을 남기고 잘라내 버린다. TUBE는 여전히 entity로 남아 있기 때문에 PLOT FACETS에서는 보이지 않는다.

이번에는 ‘LENS_BACK’을 잘라내기 해보자.

OBJECT
  .2 ‘LENS_BACK’
  BOUNDS  .1

여기서도 .2는 두번째에 있는 ELLIPSE를 의미하고 .1은 여전히 TUBE를 의미한다(‘4.3장 Objects와 Entities’를 참조하기 바란다). 이 방법을 사용하면 .1, .2, .3의 순서가 SURFACE에서 만든 순서를 그대로 따르기 때문에 순서가 섞이지 않는다. 앞에서 .3 ‘LENS_FRONT’를 통해 object를 만들어서 사용했지만 그때 뿐이다. 즉, object의 숫자가 늘어나거나 순서가 바뀌지 않는다는 뜻이다. 이 명령어로 ‘LENS_BACK’의 바깥쪽을 잘라버렸다.

이제 마지막으로 길게 남아있는 TUBE를 잘라내기 하면 된다.

OBJECT 
  .1 ‘LENS_SIDE’      
  BOUNDS .2  .3    

‘LENS_SIDE’를 object로 지정하고(가공이 되는 물체) .2와 .3의 렌즈면을 칼날로 사용해서 TUBE를 잘라낸다. 렌즈면을 칼날로 사용할 때는 안쪽/바깥쪽의 개념이 아니라 좌표축의 +/- 방향을 이용해서 부호를 적용하면 된다.

이렇게 되면 앞에서 각각의 object들에서 일일이 BOUNDS 했던것 보다 간단 명료하게 형상을 만들 수 있게 된다. Object의 이름을 나중에 선언하는 이런 방식은 BOUNDS에서 뿐만 아니라 ASAP의 전영역에 적용되는 방식이다.

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: