开源的矢量图手绘工具:Ipe

说起绘图工具, 尤其是适合与TeX配合使用的示意图绘制工具, MetaPost和Asymptote都很强大, 只是二者画图时都需要垒点代码, MetaPost还略显古老, 有些方面设计得不够完善. 在绘制那些非数学图非统计图非流程图而精度要求又不是很高的示意图时, 寻找一个上手简单, 功能足够的矢量图绘制工具就显得很重要了. 画个小图用上AI/CorelDraw/Inkscape这些巨无霸似乎有些夸张, 而且我总是用不好这些软件里那个贝塞尔曲线工具 .. Google后也不会, 希望下次遇到个会用的人手把手教我一下 .. :oops:

ipe_tetracube

Ipe绘制的图形示例

今天试用了一些专门的绘图宏包(PSTricks/PGF/TikZ)和GUI的手绘工具(TpX/Ipe/MetaGraf/Jpgfdraw/LaTeXDraw), 个人感觉还是Ipe比较好用, 图形简约自然, 风格十分贴近MetaPost等经典工具, 可以直接导出EPS/PDF, 又能直接嵌入TeX字符和公式(利用了PDFLaTeX). 有这些功能, 我已经满足了. 一个小小的遗憾是Ipe没有那个LaTeXDraw自带的坐标轴和网格绘制功能, 但手工画一下好像也不是很难.

特别值得注意的是,Ipe是支持编写扩展的. 其扩展叫做Ipelets. 官方释出的版本中已经自带了一些比较实用的Ipelets, 比如绘制任意边数的正多边形, 画三角形内切/外接圆等等功能简单的Ipelets, 更有Delaunay三角剖分等等与计算几何中Voronoi图相关的比较专业的Ipelets. 更让我惊讶的是, Ipe还与优秀的计算几何算法库CGAL建立了联系: CGAL Ipelets提供了对CGAL算法库的访问, 而这些Ipelets现在已经是CGAL的一部分. 可以在研究计算几何时作为辅助工具玩玩.

ipelets

Ipe中自带的Ipelets

官方主页(The Ipe extensible drawing editor):

http://tclab.kaist.ac.kr/ipe/

部分第三方Ipelets:

http://tclab.kaist.ac.kr/ipe/ipelets.html

下面的页面有很多绘图示例(基本上都是物理情境示意图)可以作为参照练习使用:

http://melusine.eu.org/lab/ipe

Ipe的缺点是不能精确控制图形, 对于一些牵涉数学的图形和较为复杂的、涉及计算的图形十分乏力, 不过在要求比较低时快速作个图还是可以的. 下面是一份网友制作的完整文档, 《经典力学学习札记》, 全部图形使用Ipe绘制, 可以大致看一下效果(由于dropbox目前被ooxx, 国内无法访问).

http://dl.dropbox.com/u/4509593/Mech_tianyi/mech_tianyi.pdf

p.s. 我很喜欢这个文档的风格, 行气很足, 很漂亮. 只是Adobe的免费宋体还是显得略细了些.

In god we trust, or in love?

You don't have to believe in God, but you should believe in The Book.

        ——P. Erdos

即日启程, 在接下来几天没有网络的日子里, 我深信亲情能够温暖人心. 临行前突然又想写点东西. 标题的前半句出自《圣经》, 后半句与本文有点关系, 似乎还是王小帅一部电影的英文名. 中间还少了一环, 这环就是数学. 大神P.Erdos[1] 不太相信上帝, 但他相信世界上有一本超穷的“天书”(The Book), 那里包含了所有数学定理最简洁、最漂亮、最优雅的证明. 他对一个证明的最高赞誉就是:

It is from The Book!

按照God→Math→Love的逻辑, 爱亦应有自己的数学表述. 有了数学表述自然要可视化一下. 笛卡尔心形线令人心碎的爱情故事不知其真实程度, 不过确实够浪漫的. 不过这隐函数都学完了还画心形线就太out了, 今天咱也浪漫一把, 画个隐函数方程生成的三维心. 不知此图能否有幸入选The Book的图形部分?

MATLAB_3D_heart

图1: MATLAB生成三维心形

原始方程:

MATLAB_3D_heart_formula
自己画一个?

?View Code SCILAB
1
2
3
4
5
[x,y,z]=meshgrid(linspace(-3,3,120));
f=(x.^2+(9*y.^2)./4+z.^2-1).^3-((9*y.^2).*(z.^3))./80-(x.^2).*(z.^3);
p=patch(isosurface(x,y,z,f,0));
set(p, 'FaceColor', 'r', 'EdgeColor', 'n');
daspect([1 1 1]);view(3);camlight('right');lighting phong

[1] P.Erdos (1913-1996), 当代最伟大的数学家之一, 他一生中同485位合作者发表了1475篇数学论文. Erdos的研究领域主要是数论和组合数学, 但他的论文中涵盖的学科有逼近论、初等几何、集合论、概率论、数理逻辑、格与序代数结构、线性代数、群论、拓扑群、多项式、测度论、单复变函数、差分方程与函数方程、数列、Fourier分析、泛函分析、一般拓扑、代数拓扑、统计、数值分析、计算机科学、信息论等等. 美国数学学会(AMS)的《数学评论》杂志曾把数学划分为约六十个分支, Erdos的论文涉及了约40%.

斯人已逝, 思想长存.

2010年春节前

雪夜哈尔滨