Как с помощью wxPython нарисовать кривую Безье по четырем точкам?

Мне кажется, что DC поддерживает только кривые любого вида со сплайнами. Существуют ли какие-либо библиотеки, которые добавляют функциональность Безье, или есть способ преобразовать кривую Безье в сплайн?


person Bibendum    schedule 27.02.2010    source источник
comment
Хм ... что ты пытаешься сделать? Асимптота великолепна в графике. Проверьте: asymptote.sourceforge.net/gallery/BezierSurface.asy   -  person Hamish Grubijan    schedule 27.02.2010


Ответы (2)


Учитывая 4 контрольные точки, формулу для связанной кубической кривой Безье нетрудно вычислить . После вычисления набора точек на кривой можно использовать DC.DrawLines, чтобы нарисовать его.

Существует реализация на Python для вычисления точек на обобщенных кривых Безье (бесстыдный плагин) здесь. Он обобщен в том смысле, что может принимать произвольное количество контрольных точек (> 2) в качестве входных данных для make_bezier. Если вам нужна только версия с 4 контрольными точками, вы можете полностью вырезать pascal_row и заменить

combinations=pascal_row(n-1)

с участием

combinations=(1,3,3,1)
person unutbu    schedule 27.02.2010

Немного погуглив, думаю, я выберу wx.GraphicsContext, который поддерживает wx.GraphicsPath. Похоже, у него есть именно то, что мне нужно, в дополнение к сглаживанию (согласно этой странице)

person Bibendum    schedule 27.02.2010
comment
Отличная идея. Это новый способ рисования в wxpython. - person DrBloodmoney; 27.02.2010