David Fanning의 Coyote Graphics

오늘의 IDL이 있기까지 David Fanning 박사님의 공헌에 대해서 이의를 달 사람은 없을 거라고 생각합니다. IDL 사용자들의 가려운 점을 잘 정리하여 명쾌하게 설명한 그 분의 사이트를 방문해 보면, 대단하다는 생각이 앞섭니다. 제가 처음 IDL을 배울 때 부터 오늘까지 항상 도움을 받고 있습니다.

David Fanning 박사의 Coyote Site : http://www.idlcoyote.com

IDL은 8.0부터 New Graphics라는 오브젝트 그래픽스 기반의 새로운 체계를 만들었고, 이를 통해서 기존의 다이렉트 그래픽스의 한계를 극복하고자 했습니다. 오브젝트 그래픽스는 좋은 거지만, 다이렉트 그래픽스와는 근본이 아예 다르죠. 다이렉트 그래픽스가 가진 수십년의 전통 때문에 IDL 사용자들에게 많은 사랑을 받지는 못하고 있었습니다. 다이렉트 그래픽스 처럼 쉽지가 않거든요. 그래서 오브젝트 그래픽스를 가지고 다이렉트 그래픽스의 사용 방법과 유사한 인터페이스를 만든 것이 New Graphics입니다. 안쪽으로 들어갈 수록 그 맛이 다르지만 대부분의 상황에서는 다이렉트 그래픽스와 유사한 방식으로 사용합니다.

David Fanning 박사는 이와 다른 방식으로 새로운 IDL 그래픽 체계를 발표했습니다. cgXXXX 와 같은 방식의 명령 체계인데요, cg는 coyote graphics 를 의미합니다. 이는 다이렉트 그래픽스에 기반한, 좀 더 직관적이고 편리한 인터페이스입니다. 이거 오늘에서야 진지하게 둘러봤는데, 아주 멋진 기능들이 잘 녹아 들어 있는 것 같습니다(저도 한참 더 사용해 봐야 진가를 알게 될 것 같습니다만). IDL 다이렉트 그래픽을 사용하면서, “제발 이것 좀 고쳐줬으면…”하는 것들을 손 본 것 같은 느낌이 드네요.

오늘 하고 싶은 얘기는 바로 Coyote Graphics 입니다. 다이렉트 그래픽스는 아무리 낡았다고 얘기를 해도 결국 누구나 사용하고 있는 IDL 그래픽의 기본입니다. 그리고 사실 문제는 딱 하나만 남죠. 최종 출력물의 품질입니다. 고전적 폰트를 사용하고, 트루타입 폰트를 제대로 소화하지 못하고… 뭐 결국 “출력물이 현대적이고 예쁘지 않아요”로 정리됩니다. 그런데, 다이렉트 그래픽스에서 PostScript로 출력을 하게 되면 이 문제가 모두 해결됩니다. 그러니까 과학자들이 비교적 불만 없이 다이렉트 그래픽스를 고수했던 것이기도 하구요. 논문에 삽입할 그림은 PostScript로 만드는 거죠. 하지만 PNG나 JPG 같은 그래픽 파일을 만들었을 때는, 그리 아름답지는 못했습니다. Fanning 박사는 결국 PostScript 출력물을 다시 PNG나 JPG 등으로 만드는 방법을 선택했습니다. 이렇게 된다면 출력물의 품질이 꽤 좋아지죠. 남은 문제는 속도와(아무래도 한번 다른 매체를 거치므로), PostScript를 누가 어떻게 PNG 등으로 변환할 것인가 하는 것입니다.

속도는 참아야죠 뭐. 요즘 컴퓨터 빨라진 것을 믿는 것도 있구요, 다이렉트 그래픽스가 원래 꽤 빨랐다는 것을 믿어야 합니다. 그리고 최종 출력물은 그리 빈번하게 만드는 것도 아니므로 큰 문제가 아닙니다. 다음 문제는 어떻게 PostScript를 그래픽 파일로 변환할 것인가입니다. PostScript를 IDL이 못 읽습니다. 사실 PostScript를 읽는 다는 것이 만만한 일은 아닙니다. 읽어서 그 뒤에 어떤 작업을 할 것인지도 문제가 됩니다. PostScript는 꽤 복잡한 파일 형식을 가지고 있거든요. 그래서 일반적으로는 읽을 일도 없구요. 보통 PostScript는 최종 생산물이니까요. 그래서 IDL에는 PostScript를 읽는 기능이 없는데, Fanning 박사는 ImageMagik이라는 외부 프로그램(매우 유명합니다. 그리고 매우 유용하구요, 저나 에스이랩 연구소장도 ImageMagik을 프로젝트에 활용할 때가 많습니다)을 이용하기로 했습니다. ImageMagik에서는 명령어 한 줄로 PostScript를 JPG나 PNG 같은 그래픽 파일로 만들 수 있거든요. cgGraphics를 제대로 사용하기 위해서는 ImageMagik을 설치해 주어야 합니다. 어려운 일은 아니죠(하지만 이런 기능을 IDL에 내장해 놓았다면 얼마나 좋을까요).

cgPlot에서 생성한 JPG 파일

cgPlot에서 생성한 JPG 파일

그래픽 창의 편의성도 높였습니다. 그림을 그려 놓고 나서 마음에 든다면 메뉴를 통해 PostScript나 다양한 그래픽 파일로 출력할 수 있게 기능이 구현되어 있습니다. 창의 크기를 조정하면 그림의 크기도 창에 맞추어 다시 그려집니다. “다이렉트 그래픽스라는 것은 그게 원래 안된다”라고만 생각하고 있었는데, 어쨌든 새 인터페이스가 이를 중간에서 잘 해결해 주고 있습니다. 편하네요.

cgPlot, x, y, color='Red', THICK=3, XSTYLE=1, /WINDOW

cgPlot, x, y, color=’Red’, THICK=3, XSTYLE=1, /WINDOW

 

이제 더 이상 말은 필요 없을 것 같습니다. Coyote Graphics Gallery를 한번 방문해 보시지요. 물론 아무리 훌륭한 그래픽 체계라고 해도, 여기 나오는 그림들을 그리기 위해서는 데이터 처리라든지, 그래픽 체계에 대한 이해가 필요합니다. 작업에는 시간이 걸려요. 하지만 갤러리만 돌아 보고 있어도, “아, 그 때 이거 썼으면 좋았을 텐데…” 하는 그림들이 많이 보입니다.
게다가, Coyote Graphics는 소스코드 채 제공됩니다. 궁금한 루틴은 열어 보시면, 모범적인 IDL 프로그래밍 스타일을 공부하실 수도 있습니다. 저 역시, “아…” 하고 있습니다.  David Fanning 박사는 프로그램 정말 읽기 좋게 작성하시는 군요.

결과적으로 우리는 David Fanning 박사님 덕분에 여전히 경쟁력 있는 다이렉트 그래픽스 기반의 새로운 그래픽 체계를 하나 더 가지고 있는 셈이 되었네요. 프로그램을 만들기 전에 New Graphics와 Coyote Graphics 를 두고 어떤 것을 쓸지, 저는 비교적 행복한 고민을 하게 되었습니다.
Thanks, Dr. Fanning.