«Быстрая» библиотека длины кривой Безье на Python

Чтобы вычислить длину кривой Безье, я использовал 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, которые могут иметь лучшую производительность?


person Joe    schedule 04.05.2012    source источник


Ответы (1)


Я бы, вероятно, свернул свой собственный вызов безье, используя pypy - я не помню, чтобы это было особенно сложно, когда я некоторое время назад посещал уроки графики. Если вы кодируете его на чистом питоне, pypy должен сделать это довольно быстро. Если pypy не вариант, лучше всего использовать cython с cpython.

Я часто беру чистый модуль Python и предварительно обрабатываю его m4, чтобы получить общий код для чистых версий Python и Cython одного и того же. Кажется, это работает очень хорошо. Действительно, иногда я даже использую m4 в качестве макроязыка вместо python, просто чтобы избежать вызовов методов без дублирования кода в версии обслуживания модуля.

person user1277476    schedule 04.05.2012
comment
Я понял, что такое en.wikipedia.org/wiki/M4_(computer_language). , но я не использовал его раньше, поэтому я не совсем понял ваш второй абзац. - person Joe; 04.05.2012