为了计算贝塞尔曲线的长度,我一直在使用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())
其中p
和q
是曲线的终点,d
是两个控制点相对位置的垂直偏移量。 (在我的应用程序中,曲线总是"向上")。
然而,我发现这个用于获取曲线长度的库调用非常缓慢。是否有其他python库可能有更好的性能?
答案 0 :(得分:0)
我可能会使用pypy滚动我自己的bezier可调用 - 我不记得当我一段时间参加图形课程时它特别困难。如果你用纯python编写代码,pypy应该会很快。如果pypy不是一个选项,那么使用cython和cpython是下一个最好的选择。
我经常会使用一个纯python模块,而m4会对它进行预处理,以获得纯python和同一事物的cython版本的通用代码。它似乎工作得很好。实际上,有时我甚至会使用m4作为python的宏语言,只是为了避免方法调用而不在模块的维护版本中复制代码。