Object Graphics에서는 마치 블록을 쌓듯이 그래픽이 구현된다. 예를 들어, 2차원 plot의 경우를 보면, x축, y 축, plot, x축 제목, y축 제목, 전체 제목 등의 구성요소들 각각이 하나의 객체(Object)가 된다. 이러한 객체들의 집합체로서 하나의 그래픽적 결과물이 도출된다. 이러한 객체들은 그 종류가 많으며, 각 개체는 생성, 변형, 제거가 항상 가능하다. 그래서 사용자 입장에서는 좀 더 유연한 작업이 가능하다.
아주 간단한 예를 들어보면, plot을 그리면서 title이라는 키워드를 사용하여 제목을 붙였다고 가정해보자. 이 경우 대개 다음과 같은 명령을 실행하게 된다.
plot, findgen(10), xtitle=‘X Range’, ytitle=‘Y Range’
그러면, X축 하단 및 Y축 좌측에 ‘X Range’와 ‘Y Range’라는 문자들이 축 제목으로 첨가된 plot이 다음과 같이 그려질 것이다.
그런데 만약 이 제목을 붙이지 않은 그냥 plot만을 그리고 싶다고 하자. 그러면 이 경우에는 당연히 다음과 같은 명령을 또 실행하면 된다. 이건 뭐 IDL을 쓸 때 아주 흔하게 벌어지는 광경이다.
plot, findgen(10)
그런데 이 상황을 자세히 파고들면 사실 IDL에서는 plot 자체를 처음부터 다시 그린다. 즉, 내가 구현한 그래픽의 어떤 요소에 대한 추가, 변형, 제거와 같은 작업을 하려면, 무조건 처음부터 다시 그려야만 한다. 이것이 Direct Graphics의 특성이다. 물론 지금 예로 든 작업은 속도가 매우 빠르기 때문에, 다시 그린다는 사실이 그리 실감이 나지는 않을 것이다. 하지만, 매우 복잡한 그래픽을 구현할 경우에는 솔직히 좀 투박하게 느껴질 여지가 많다. 예를 들어, 지도를 그리고 그 위에 이미지, 등고선 등을 추가적으로 겹쳐 그리는 것과 같은 작업의 경우, 이러한 아주 자그마한 요소 하나를 바꾸기 위하여 전체 그림을 다시 그려야만 한다면, 그 과정이 매번 반복되는 모습을 보기가 번거로울 경우도 있을 것이다. 특히나 지도의 경우 해안선을 고해상도로 했다면 이것이 그려지는데 다소 시간이 걸리기 때문에 특히나 더 답답하게 느껴질 수도 있다.
하지만 이와 같은 작업을 Object Graphics로 구현하면 사정이 달라진다. 굳이 모든 요소들을 처음부터 다시 그리는 번거로움없이, 언제든 내가 원하는 그래픽 요소에 대한 추가, 변형, 제거가 가능해진다. 이것은 각 그래픽 요소에 해당되는 객체들은 구현이 되는 순간부터 메모리에 상주해있기 때문에, 따로 제거하지 않는 한은 항상 그래픽 공간상에 남아있기 때문이다. 그래서 제목만 없애고 싶다면, 해당 명령을 사용하면 그것만 살짝 없어질 뿐 나머지 그래픽 구성요소들은 굳이 처음부터 다시 그릴 필요가 없다. 그래서 그래픽이 매우 유연하게 변하는 것처럼 느껴지도록 구현이 가능하다는 장점이 있다. 특히나 3차원 그래픽, 즉 폴리곤이나 볼륨 등이 난무하는 현란한 그래픽을 구현하고자 할 경우에는 당연히 Object Graphics를 사용할 수 밖에 없다.
위의 그림은 앞서 그렸던 것과 같은 내용의 plot을 Object Graphics 기반에서 그려본 예제이다. 아마 두 그림을 비교해보면 시각적으로 뭔가 느껴지는 차이점이 있을 것이다. 가장 먼저 느껴지는 부분이라면 아무래도 Object Graphics로 그려진 결과물이 좀 더 깔끔해보인다는 사실이다. 이러한 차이점은 특히 폰트에서 두드러지게 나타난다. 따라서 같은 값이면 다홍치마라고, 아무래도 시각적으로 깨끗해보이는 방법을 사용하고 싶다는 생각이 누구나 들 것이다. 이러한 시각적인 측면 역시 Direct Graphics에 비하여 Object Graphics가 갖는 강점이 될 것이다.
하지만, 이와 같은 장점을 누리기 위해서는 프로그래밍 과정에서 Direct Graphics에서보다 더 복잡한 작업을 사전에 해줘야 한다는 전제가 따른다. 이러한 작업은 IDL의 커맨드 라인에서의 간단한 입력으로 바로 구현되는 성격의 것은 아니다. 따라서 Object Graphics는 IDL 사용경험이 어느 정도 있는 중급 이상의 프로그래머들에게 적합한 주제라는 점을 어느 정도는 인정할 필요가 있다. 하지만 너무 겁먹을 필요는 없다. IDL의 완전초보만 아니라면, 내용을 찬찬히 익히다보면 분명히 접근 가능한 내용이기도 하다는 점을 위안으로 삼아주길 바란다.
'IDL > Object Graphics' 카테고리의 다른 글
Object Graphics in IDL [05] (0) | 2010.08.20 |
---|---|
Object Graphics in IDL [04] (0) | 2010.08.14 |
Object Graphics in IDL [02] (0) | 2010.08.04 |
Object Graphics in IDL [01] (0) | 2010.08.03 |
Object Graphics in IDL 연재 예고 (0) | 2010.08.03 |