Friday, January 26, 2007

杂言

连续一周失眠,躺在床上就胡思乱想,每天都要两三点钟才能睡去。

右眼本来就不好,还时不时地跑进去沙子。也不知道那些沙子最后都去哪儿了。

昨天路过新街口外大街,发现自行车道已经修整过了,骑着感觉与以前大不一样。

早上在教三下面看一辆车的车牌:PHD・168,把这两个元素放一起有点揶揄的意思,不过也多少能反映一部分人的心态和一所大学的趣味。

Tuesday, January 23, 2007

浮点数转整型数

C/C++ 里如用强制类型转换把浮点数转成整型数, 像这样 int a=(int)b, 只是简单地丢弃 b 的小数部分。实际中经常希望是四舍五入地转换,这可以这么做:
#define ROUND(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
如果只用于正数,可以简单地用(int)(x + 0.5).
实际上因为位数不同,float 型转成 int 型可能溢出,即使 long 也是。要代码可靠的话还需作越界检查。

参考:
http://c-faq.com/fp/round.html
http://www.cs.tut.fi/~jkorpela/round.html
http://www.gamedev.net/community/forums/topic.asp?topic_id=280883

Friday, January 12, 2007

PDF/PS/EPS 转 WMF/EMF

Word 对 PDF/PS/EPS 图支持不好,要把它们插入到 Word,可以先转成 WMF/EMF 图。目前找到的最好的转换方法是用 pstoedit,它是开源软件,在 Windows 平台和 Linux 平台都可以用。使用时需要先安装 PostScript 解释器(如 GhostScript)。它只支持命令行操作,如转 EPS/PDF 为 WMF:
pstoedit -f wmf file.eps(pdf) file.wmf
转 EPS 为 PDF:
pstoedit -f pdf file.eps file.pdf

pstoedit -f ps:pdfwrite file.eps file.pdf
如文件不止一页,须在目标文件名中加上"%d",如:
pstoedit -f wmf file.pdf file%d.wmf
除了 WMF/EMF和PDF,pstoedit 还支持输出很多其它矢量图格式,如 LaTeX2e,gnuplot,MetaPost,Mathematica,SWF等。

参考:
Converting from PostScript to EWM
libEMF: Enhanced Metafile Library