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 형태가 되어 서로 만나지 못하고 계속 뻗어 나가게 된다.
즉, AXICONIC은 무한대까지 그림을 그릴 수 있게 되어 있다. ellipse형태로 그림을 그린다 하더라도 무한대의 영역을 대상으로 하기 때문에 PLOT으로 그림을 그릴 수 없다(컴퓨터가 그림을 그려줄 영역을 계산하지 못한다). 그래서 AXICONIC 명령어는 LOCAL이나 LIMITS 명령어로 그 영역을 한정 지어주어야 한다. 여기서는 LOCAL 명령어로 그림을 그려줄 영역을 한정 하였다. 그리고, SURFACE 명령어를 사용한다는 것은 면을 그리기 위한 것이기 때문에 선으로 된 Entity로 남겨 두어서는 안된다. 즉, OBJECT 명령어로 이름을 지어 주면 PLOT FACETS 명령어를 이용하여 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 명령어는 필요없게 된다.
3) CARTOVAL
CARTesian OVAL 면을 만드는 명령어에 대해서 알아보자.
SURFACE
CARTOVAL Z 0 –5 1.0 2 2.5 ELLIPSE 1
OBJECT ‘SURF_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 지점에 맺히는 것을 확인할 수 있다.
4) ELLIPSOID
달걀 모양의 3차원 타원체를 만들어보자.
SURFACE
ELLIPSOID 2 1 3 0 0 0
OBJECT ‘SURF_ELLIPSOID’
Semi-width X=2, Semi-width Y=1, Semi-width Z=3의 크기를 가지는 타원체의 중심을 x=0, y=0, z=0의 위치에 놓는다.
5) HORN
다항식을 이용한 곡선을 만들어보자.
SURFACE
HORN Z 0 0 0 0 0 1
LOCAL –4@1.5 0 1 Z
OBJECT ‘SURF_HORN’
Y-Z 평면에서 Y^2 = 0 + 0*Z + 0*Z^2 + 0*Z^3 + 1*Z^4인 다항식을 만들었다. 즉 z^4의 상수만 1이고, 나머지는 모두 0인 함수이다. 이 명령어 역시 무한대로 영역이 설정되기 때문에 LOCAL 명령어를 사용해주어야 한다. HORN을 만들기 위해서는 +Z축만 그려져야 한다.
6) OPTICAL
기준축에 회전 대칭인 비구면 형상을 만들어 보자. 축에 회전 대칭이기 때문에 Radius 값은 하나만 있으면 된다. 즉, 기준축과 기준축에서의 기준점의 위치값, Radius, 그리고 영역을 한정 지어주는 범위값만 있으면 된다.
SURFACE
OPTICAL Z 0 2 ELLIPSE 1
OBJECT ‘SURF_OPTICAL’
OPTICAL 명령어도 LOCAL 명령어로 사용할 영역을 한정지어 주거나 ELLIPSE, RECTANGLE, HEXAGONAL등과 같은 aperture 옵션을 이용해서 특정 영역으로 정의해 주면 된다.
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와 같은 옵션없이도 사용할 수 있다.
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 처럼 명령어를 변경해 보면 문제없이 그림이 그려질 것이다.
9) PLANE POINTS
위와 같은 무한평면을 이번에는 3개의 점을 가지고 만들어보자.
SURFACE
PLANE POINTS 0 1 –1, 0 0 0, 1 0 0
LOCAL –6@1
OBJECT ‘SURF_PLANEPOINTS’
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’
이것도 역시 영역을 지정해 주어야 한다.
11) TORUS
도넛 모양을 만들어보자.
SURFACE
TORUS Z 0 1 0.5 0.5
OBJECT ‘SURF_TORUS’
Z축의 원점을 기준으로 Major Radius=1, Minor Semi X=0.5, Minor Semi Y=0.5인 원을 가지고 Z축으로 회전시킨 도넛을 만든다.
12) TUBE
빨대와 같은 형태의 TUBE를 만들어보자.
SURFACE
TUBE Z 0 1 1, 2 1.5 1.5
OBJECT ‘SURF_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를 만들 수 있다.
13) ZERNIKE
마지막으로 ZERNIKE Polynomial 면을 만들어보자.
SURFACE
ZERNIKE Z 0 0 0 0 1
OBJECT ‘SURF_ZERNIKE’
Z축의 원점을 시작점으로 2r^2 – 1의 값을 1로 설정하였다. 이 값은 Defocus 값으로 Z=-1에 꼭지점이 생성된다. 그리고 Z=1, Y=1,-1인 지점이 끝점이 된다.