Surfaces

ASAP에서 SURFACE를 만드는 명령어들에 대해서 알아보자.

1) AXICONIC
우선 아래 프로그램과 같이 입력하고 실행시켜 보자.

SYSTEM NEW
RESET 

SURFACE                                         !! SURF-AXICON 생성 
  AXICONIC Z  0 1  0 .5  1  3 .25
    LOCAL 4@1.5  .5  3.5  Z  
OBJECT ‘SURF_AXICONIC’

WINDOW  Y   Z
PROFILES

PLOT FACETS
RETURN

Z축을 기준으로 Z축으로 0 이고 Height가 1인 위치를 지나면서, 첫번째 초점인 (0, 0.5)위치를 기준으로, 0이거나 양수인 값을 주어 ellipse 형태의 곡선을 그리는데, 두번째 초점이 (3, 0.25)인 지점을 고려하게 된다. 만약 5번째 값을 0이나 1이 아닌 – (음수) 값을 주면 두 지점이 연결되는 ellipse 형태가 아닌 hyperbola 형태가 되어 서로 만나지 못하고 계속 뻗어 나가게 된다.

SURF_AXICONIC_01
그림 4.28 AXICONIC 만들기

즉, AXICONIC은 무한대까지 그림을 그릴 수 있게 되어 있다. ellipse형태로 그림을 그린다 하더라도 무한대의 영역을 대상으로 하기 때문에 PLOT으로 그림을 그릴 수 없다(컴퓨터가 그림을 그려줄 영역을 계산하지 못한다). 그래서 AXICONIC 명령어는 LOCAL이나 LIMITS 명령어로 그 영역을 한정 지어주어야 한다. 여기서는 LOCAL 명령어로 그림을 그려줄 영역을 한정 하였다. 그리고, SURFACE 명령어를 사용한다는 것은 면을 그리기 위한 것이기 때문에 선으로 된 Entity로 남겨 두어서는 안된다. 즉, OBJECT 명령어로 이름을 지어 주면 PLOT FACETS 명령어를 이용하여 3D 형상을 만들어 볼 수 있다.

SURF_AXICONIC_02
그림 4.29 AXICONIC 3D 형상

2) BICONIC
이름에서 알 수 있듯이 두개의 CONIC 값을 가지고 면을 만들어 보자. 위의 프로그램에서 SURFACE ~ OBJECT 부분만 변경하였다.

SURFACE
 BICONIC Z 0  2 4 1 1 ELLIPSE 1
OBJECT ‘SURF_BICONIC’

중심이 Z축의 원점(0)에 있고, X축에서 R=2, Y축에서 R=4의 반경을 가지는 곡선을 만들게 되는데 반경이 크면 곡선은 완만하게 된다. 두 곡선의 CONIC Constant 값을 모두 -1로 설정하여 Parabola 형태를 가지게 하였다.  그리고 Z축에서 봤을때(X-Y 평면) 반경이 1인 ELLIPSE 형태의 둥근모양으로 잘라내기 한 형태를 만들었는데 ELLIPSE로 그 영역을 한정하였기 때문에 여기에서는 LOCAL 명령어는 필요없게 된다.

SURF_BICONIC_01
그림 4.30 BICONIC Y-Z 평면

SURF_BICONIC_02
그림 4.31 BICONIC X-Z 평면

SURF_BICONIC_03
그림 4.32 BICONIC 3D 형상

3) CARTOVAL
CARTesian OVAL 면을 만드는 명령어에 대해서 알아보자.

SURFACE
 CARTOVAL Z
0  5 1.0  2 2.5  ELLIPSE 1
OBJECT ‘SURF_CARTOVAL’

SURF_CARTOVAL_01
그림 4.33 CARTOVAL 만들기

Z축을 광축으로 Z=0에서 시작하는 좌우 대칭인 면을 만드는데, First focus point인 Initial Distance=-5이고 이때의 첫번째 매질의 굴절률은 1.0으로 설정하였다. 그리고, Second focus point인 Final Distance=2이고 두번째 매질의 굴절률은 2.5로 설정하였다. CARTOVAL 면의 영역을 한정하기 위해 ELLIPSE 명령어로 Semi-aperture=1로 설정하였다.

CARTOVAL 면을 만들고 Z=-5 지점에서 Ray를 만들어 보았다. 임의의 입사 각도를 주고 Ray를 만들어 보면 Z=2 지점에 맺히는 것을 확인할 수 있다.

SURF_CARTOVAL_02
그림 4.34 CARTOVAL 3D 형상

4) ELLIPSOID
달걀 모양의 3차원 타원체를 만들어보자.

SURFACE
 ELLIPSOID
2 1 3  0 0 0
OBJECT ‘SURF_ELLIPSOID’

SURF_ELLIPSOID_01
그림 4.35 ELLIPSOID 만들기

Semi-width X=2, Semi-width Y=1, Semi-width Z=3의 크기를 가지는 타원체의 중심을 x=0, y=0, z=0의 위치에 놓는다.

SURF_ELLIPSOID_02
그림 4.36 ELLIPSOID 3D 형상

5) HORN
다항식을 이용한 곡선을 만들어보자.

SURFACE
 HORN Z
0  0 0 0 0 1
  LOCAL  4@1.5  0 1 Z
OBJECT ‘SURF_HORN’

SURF_HORN_01
그림 4.37 HORN으로 만들어진 Curve

Y-Z 평면에서 Y^2 = 0 + 0*Z + 0*Z^2 + 0*Z^3 + 1*Z^4인 다항식을 만들었다. 즉 z^4의 상수만 1이고, 나머지는 모두 0인 함수이다. 이 명령어 역시 무한대로 영역이 설정되기 때문에 LOCAL 명령어를 사용해주어야 한다. HORN을 만들기 위해서는 +Z축만 그려져야 한다.

SURF_HORN_02
그림 4.38 LOCAL로 영역 설정

SURF_HORN_03
그림 4.39 HORN 3D 형상

6) OPTICAL
기준축에 회전 대칭인 비구면 형상을 만들어 보자. 축에 회전 대칭이기 때문에 Radius 값은 하나만 있으면 된다. 즉, 기준축과 기준축에서의 기준점의 위치값, Radius, 그리고 영역을 한정 지어주는 범위값만 있으면 된다.

SURFACE
 OPTICAL Z 0  2  ELLIPSE 1
OBJECT ‘SURF_OPTICAL’

SURF_OPTICAL_01
그림 4.40 OPTICAL ELLIPSE 만들기

OPTICAL 명령어도 LOCAL 명령어로 사용할 영역을 한정지어 주거나 ELLIPSE, RECTANGLE, HEXAGONAL등과 같은 aperture 옵션을 이용해서 특정 영역으로 정의해 주면 된다.

SURF_OPTICAL_02
그림 4.41 ELLIPSE 3D 형상

Z축을 기준축으로 Z=0의 위치에서 Radius=2인 비구면을 만들고, Semi-aperture=1인 ELLIPSE로 영역을 한정하였다.

7) PLANE
평면을 하나 만들어보자. PLANE Z 0 이라고 하면, Z=0인 지점에 무한히 큰 평면이 만들어진다. 아래 프로그램에서  ELLIPSE 1 옵션을 제거한 경우는 무한히 크기 때문에 PLOT을 할 수 없다. 그러나, ELLIPSE, RECTANGLE, HEXAGONAL과 같은 옵션을 주면 PLOT이 가능하다.

SURFACE
 PLANE Z 0  ELLIPSE 1
OBJECT ‘SURF_PLANE’

그리고, ELLIPSOID 형상과 PLANE Z 0 을 함께 사용하여 BOUNDS 명령어를 적용한다면, 즉 ELLIPSOID를 자르기 위한 참조면으로 사용한다면 ELLIPSE와 같은 옵션없이도 사용할 수 있다.

SURF_PLANE_01
그림 4.42 PLANE 만들기

SURF_PLANE_02
그림 4.43 PLANE 3D 형상

8) PLANE  NORMAL
면에 수직인 방향벡터를 가지고 면을 정의해 보자.

SURFACE
  PLANE NORMAL 
0 1 1  0 0 0
  LOCAL  6@1
OBJECT ‘SURF_PLANENORMAL’

Y-Z축으로 1 1의 방향벡터 값을 가지고, XYZ 좌표축의 원점을 기준으로 하는 무한 평면을 만들었다. 그리고 영역을 지정하여 그 영역안에서의 결과를 표시하기 위해 LOCAL 명령어를 사용하였다. PROFILES나 PLOT FACETS 명령어에서 그림이 그려지지 않을 때도 있는데, 이것은 그래픽적인 문제이지 면이 없는 것은 아니니 주의하자. 이때는 좌표를 약간 변경해보자. PLANE NORMAL 0 1 0.999 0 0 0 처럼 명령어를 변경해 보면 문제없이 그림이 그려질 것이다.

SURF_PLANEnormal_01
그림 4.44 PLANE MORMAL 만들기

SURF_PLANEnormal_02
그림 4.45 PLANE MORMAL 3D 형상

9) PLANE  POINTS
위와 같은 무한평면을 이번에는 3개의 점을 가지고 만들어보자.

SURFACE
  
PLANE POINTS 0 1 1, 0 0 0, 1 0 0
  LOCAL  6@1
OBJECT ‘SURF_PLANEPOINTS’

SURF_PLANEpoints_01
그림 4.46 PLANE POINTS 만들기

SURF_PLANEpoints_02
그림 4.47 PLANE POINTS 3D 형상

XYZ의 3차원 공간상에 존재하는 임의의 3점을 연결하는 평면을 만들어준다. 이것 역시 LOCAL로 영역을 한정지어 주어야 한다. 아래 그림은 PLANE POINTS 0 1 -0.999, 0 0 0, 1 0 0 으로그려졌다.

10) REVOLUTION
함수를 이용하여 곡선을 만들어보자. Z1=-1, Y2=1인의 값만을 가지는 함수를 정의하였다. 그 뒤에 나오는 0은 입력하지 않아도 상관없다.

SURFACE

  REVOLUTION Z 0  0 0 1 1 0 0 0 0 0 0
  LOCAL  4@1 2@3
OBJECT ‘SURF_REVOLUTION’

이것도 역시 영역을 지정해 주어야 한다.

SURF_REVOLUTION_01
그림 4.48 REVOLUTION 만들기

SURF_REVOLUTION_02
그림 4.49 REVOLUTION 3D 형상

11) TORUS
도넛 모양을 만들어보자.

SURFACE
  TORUS Z 0  1  0.5 0.5
OBJECT ‘SURF_TORUS’

SURF_TORUS_01
그림 4.50 TORUS 만들기

Z축의 원점을 기준으로 Major Radius=1, Minor Semi X=0.5, Minor Semi Y=0.5인 원을 가지고 Z축으로 회전시킨 도넛을 만든다.

SURF_TORUS_02
그림 4.51 TORUS 3D 형상

12) TUBE
빨대와 같은 형태의 TUBE를 만들어보자.

SURFACE
  TUBE Z 0 1 1, 2 1.5 1.5
OBJECT ‘SURF_TUBE’

SURF_TUBE_01
그림 4.52 TUBE 만들기

Z=0에서 Start Semi X=1, Start Semi Y=1인 원과 Z=2에서 End Semi X=1.5, End Semi Y=1.5인 원을 연결하여 TUBE를 만들었다. 지금과 같이 시작과 끝의 반지름 값이 다를 수도 있지만, 양쪽의 반지름이 같으면 빨대와 같은 TUBE를 만들 수 있다.

SURF_TUBE_02
그림 4.53 TUBE 3D 형상

13) ZERNIKE
마지막으로 ZERNIKE Polynomial 면을 만들어보자.

SURFACE
  ZERNIKE Z 0  0 0 0  1
OBJECT ‘SURF_ZERNIKE’

SURF_JERNIKE_01
그림 4.54 ZERNIKE 만들기

Z축의 원점을 시작점으로 2r^2 – 1의 값을 1로 설정하였다. 이 값은 Defocus 값으로 Z=-1에 꼭지점이 생성된다. 그리고 Z=1, Y=1,-1인 지점이 끝점이 된다.

SURF_JERNIKE_02
그림 4.55 ZERNIKE 3D 형상

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: