Maxima로 2D,3D 하트 방정식으로 맛보기 - Mathematica, Maple과 같은 Computer Algebra System
Mathematica, Maple과 같은 Computer Algebra System이다. 그래픽스를 공부하면서 수학 공식만 보면 뒷골이 땡기고 이해 못 하면 안 되는데 하며 똥줄이 타던 차에 발견한 프로그램이다. MIT에서 1960년대에 개발된 Macsyma가 모태가 된 프로그램으로 현재까지 꾸준히 업데이트 되고 있다. 라이선스는 GPL, 빌드된 바이너리만 넙죽넙죽 받아서 사용할꺼라 무료로 맘 편하게 쓸 수 있겠다. 라이선스에 관해서는 이전에 살짝 정리한 포스트를 참조. 프로그램은 홈페이지에서 다운로드 할 수 있다. Maxima - 무료 Computer Algebra System에서 어떤 프로그램인지 잘 소개했다.
맛 좀 봐야겠는데, 뭘 할까 고민하던 중에 예전에 본 하트 방정식이 생각나서 이걸 그리기로 했다. 왠지 낭만적으로 보이기도 하고 말야. 2D, 3D 수식을 각각 Heart Curve - Wolfram MathWorld, Heart Surface - Wolfram MathWorld에서 구할 수 있다. heart equation으로 검색했었는데, 양키들은 2D를 Heart Curve, 3D를 Heart Surface라고 부르더라.
“나를 이용해서 그리시오”라고 떡하니 자리 잡은 Plot2D로는 x^2+y^2=0 과 같은 수식을 그리지 못한다. 패러매터로 x를 만드는 함수, y를 만드는 함수와 범위를 받기 때문이다. draw 라이브러리의 implicit를 사용하면 쉽게 그릴 수 있다. A Maxima-Gnuplot interface에 설명이 잘 되어 있으니 참고하면 된다.
그나저나 draw 라이브러리를 로드하고 난 뒤 나오는 메시지에 살짝 놀랬다. 확장자가 lisp. 홈페이지에서는 리스프를 맘껏 쓸 수 있다 밖에 못 봤는데, 위키피디아에 보니 Common Lisp로 만든 프로그램이라고 한다. 겸사겸사 리스프도 공부하면서 사용하면 되겠구나.
당연히 2D로 끝낼 수 없지. 3D로도 출력해봤다.
왠만한 기능들은 다 구현되어 있어서 만족하는데 시각화가 아쉽다. 시각화 비중이 커지면 다른 프로그램도 찾아봐야겠다.