1

为了计算贝塞尔曲线的长度,我一直在使用 pyx。

from pyx import path, unit
bez = path.curve(p[0], p[1], p[0], p[1] + d, q[0], q[1]-d, q[0],q[1])
edgelen = unit.tocm(bez.arclen())

其中pq是曲线的端点,d是两个控制点相对位置的垂直偏移量。(在我的应用程序中,曲线总是“向上”)。

但是,我发现这个获取曲线长度的库调用非常缓慢。还有其他可能具有更好性能的python库吗?

4

1 回答 1

0

我可能会使用 pypy 滚动我自己的贝塞尔可调用函数——我不记得当我不久前上图形课时它特别困难。如果你用纯 python 编写代码,pypy 应该会很快。如果 pypy 不是一个选项,那么将 cython 与 cpython 一起使用是下一个最好的选择。

我会经常使用纯 python 模块,然后 m4 对其进行预处理以获得相同内容的纯 python 和 cython 版本的通用代码。它似乎工作得很好。事实上,有时我什至会使用 m4 作为宏语言而不是 python,只是为了避免方法调用而不在模块的维护版本中复制代码。

于 2012-05-04T05:52:21.220 回答