개별 그래픽 요소 객체들 (Visualization Objects)
이 카테고리에는 우리가 이미 개념적으로는 익숙한 실제 그래픽 요소들에 해당되는 클래스들이 속해 있다. 앞서 예제들에서 언급되었던 Plot, Axis 객체외에도 Image, Surface, Polygon, Volume 등 구체적인 그래픽 요소들에 대응되는 클래스들이라고 보면 된다. 이 카테고리에 속하는 클래스들은 다음과 같다.
1. Axis (IDLgrAxis)
축(Axis)에 해당되는 객체 클래스이다. 각 방향(X, Y, Z)마다 개별적으로 하나씩 필요하다. 처음 Object Graphics를 공부할 때, 이런 것까지 내가 일일이 만들어줘야 한다는 사실을 알고 경악했던 기억이 새롭다. 하지만 이런 현실을 이해하고 받아들이는 것이 이 모든 과정의 필수코스인 듯 하다. 지금도 Object Graphics 관련 작업을 할 때 가장 하기 싫고 성가신 것이 바로 축 객체를 일일이 만들고 설정해주는 일이긴 하다.
2. Colorbar (IDLgrColorbar)
컬러바(Color Bar)에 해당되는 객체 클래스이다. 일반적으로 필요한 컬러바의 속성들을 대부분 갖고 있다. 사실 컬러바라는 것을 보면 그 안에 축(Axis), 컬러 이미지(Image), 문자(Text) 등의 개별 그래픽 요소들이 들어가 있다. 따라서 단일 성격이라기 보다는 일종의 복합적인 성격을 지닌 객체라 할 수 있다. 다만, 컬러바라는 것이 일반적으로 상당히 많이 사용되는 것이기 때문에 아예 하나의 클래스로서 내장되어 있는 경우라고 보면 된다. 뒤에 나올 Legend 객체의 경우도 이와 비슷한 성격이라 할 수 있다.
3. Contour (IDLgrContour)
2차원 자료 표출에 자주 사용되는 등고선(Countour)에 해당되는 객체 클래스이다.
4. Font (IDLgrFont)
문자열을 표출할 때 사용될 폰트를 지정하는 역할을 하는 객체 클래스이다. Object Graphics에서는 폰트마저도 객체 클래스라는 사실을 기억하자.
5. Image (IDLgrImage)
2차원 자료 표출에 자주 사용되는 영상(Image)에 해당되는 객체 클래스이다.
6. Legend (IDLgrLegend)
다중 plot에서 각각의 plot의 의미를 설명해주는 표출방식인 범례(Legend)에 해당되는 객체 클래스이다. 앞서 소개된 Colorbar 클래스와 마찬가지로 복합적인 성격을 지닌 객체라 할 수 있겠다.
7. Light (IDLgrLight)
3차원 공간상에서 그래픽 객체의 광원에 해당되는 객체 클래스이다. 이 객체는 존재는 하지만 그 자체는 실제로 그래픽상에 나타나지는 않는다. 다만 그 위치에 따라 다른 그래픽 객체들의 명암이나 그림자와 같은 효과를 조절한다. 특히 3차원 폴리곤 객체를 만들어놓고 이 광원 객체의 위치나 방향을 바꿔가며 명암과 그림자가 바뀌는 모습을 보는 것이 꽤 재미있었던 기억이 난다.
8. Palette (IDLgrPalette)
8비트 컬러체계에서의 가시화를 위하여 사용되는 컬러테이블(Color Table)에 해당되는 객체 클래스이다.
9. Pattern (IDLgrPattern)
폴리곤 객체를 구현할 때, 화소별로 색깔을 채우느냐 아니면 비우느냐를 정의하는 패턴(Pattern)이라는 특성에 해당되는 객체 클래스이다.
10. Plot (IDLgrPlot)
그래프(Plot)에 해당되는 객체 클래스이다. 주의할 점은 자료 자체에 대한 plot에 해당될 뿐, 축(Axis)와는 별개라는 점이다. 따라서 plot을 구현하는데 있어서는 번거롭겠지만 축 객체를 따로 생성해주어야 한다.
11. Polygon (IDLgrPolygon)
여러 개의 꼭지점(Vertex)들로 이루어지는 다각형(Polygon)에 해당되는 객체 클래스이다. 오히려 '폴리곤'이라는 용어로 더 많이 사용되므로 여기서도 앞으로는 그렇게 표현하도록 하겠다.
12. Polyline (IDLgrPolyline)
여러 개의 꼭지점(Vertex)들이 순서에 따라 이어져서 가시화되는 선(Polyline)에 해당되는 객체 클래스이다.
13. Region of Interest (IDLgrROI)
관심영역(Region Of Interest)에 해당되는 객체 클래스이다. ROI가 여러 개일 경우 이들을 한꺼번에 포함하는 IDLgrROIGroup이라는 클래스도 있다.
14. Surface (IDLgrSurface)
2차원 자료 표출에 자주 사용되는 면(Surface)에 해당되는 객체 클래스이다.
15. Symbol (IDLgrSymbol)
Plot에서 자주 이용되는 심볼(Symbol)에 해당되는 객체 클래스이다.
16. Tessellator (IDLgrTessellator)
일반적으로 그래픽 가속에 있어서 폴리곤을 처리할 때, 오목하거나(Concave) 안에 구멍이 있는 경우와 같은 복잡한 형태의 폴리곤은 항상 볼록한(Convex) 폴리곤들(일반적으로는 삼각형)의 조합으로 환산되어 처리된다. 이는 OpenGL에서의 특성이며 IDL 역시 OpenGL을 사용하기 때문에 항상 폴리곤을 이렇게 처리한다. 이러한 기법을 Tessellation이라고 하는데 이에 해당되는 객체 클래스이다.
17. Text (IDLgrText)
문자열(String)에 해당되는 객체 클래스이다. 폰트 객체와 함께 사용되는 경우가 많다.
18. Trackball (IDLgrTrackball)
WIDGET_DRAW 함수로 구현된 GUI상의 Object Graphics 기반 윈도우상에서 3차원으로 렌더링된 객체를 마우스로 이동 또는 회전할 수 있도록 해주는 역할을 하는 객체 클래스이다.
19. Volume (IDLgrVolume)
3차원 볼륨(Volume)에 해당되는 객체 클래스이다. 실제 3차원 공간에서 렌더링될 때에는 OpenGL 또는 소프트웨어 가속이 적용된다. Object Graphics에서 가장 시스템 리소스를 많이 잡아먹는 객체라 할 수 있다.
현재 IDL의 최신 버전인 8.0을 기준으로 했을 때 이렇게 19개의 하위 그래픽 관련 개체들이 정의되어 있다. 여기서는 각 클래스에 대한 너무 자세한 설명은 다루지않기로 하겠다. 어차피 이후에 나올 내용들에서 자세하게 언급될 경우들이 생길 것이다. 이와 같은 객체 클래스들이 결국 모델 객체에 포함되고, 이 모델 객체가 뷰 객체에 포함되는 식으로 구현된다는 점만 일단 잘 기억해두자.
'IDL > Object Graphics' 카테고리의 다른 글
Object Graphics in IDL [12] (0) | 2010.10.10 |
---|---|
Object Graphics in IDL [11] (0) | 2010.10.01 |
Object Graphics in IDL [09] (0) | 2010.09.27 |
Object Graphics in IDL [08] (0) | 2010.09.16 |
Object Graphics in IDL [07] (0) | 2010.08.28 |