Как нарисовать кривую Безье с четырьмя точками с помощью wxPython? - PullRequest
0 голосов
/ 27 февраля 2010

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

Ответы [ 2 ]

2 голосов
/ 27 февраля 2010

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

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

combinations=pascal_row(n-1)

с

combinations=(1,3,3,1)
1 голос
/ 27 февраля 2010

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

...