Какую интерполяцию использует Tkinter для кривых? - PullRequest
0 голосов
/ 10 июля 2020

Я наткнулся на этот пост:

enter image description here (https://pythongraphicgames.wordpress.com/tag/curved-line/), и мне стало интересно, какой алгоритм интерполяции Tkinter использовал для создания кривой. Куби c? Эрмит? Косинус? и можно ли это указать?

1 Ответ

1 голос
/ 10 июля 2020

Используется алгоритм Безье.

Линейные и многоугольные объекты имеют параметр smooth для управления сглаживанием. Это то, что каноническая документация говорит об этой опции:

-smooth smoothMethod : smoothMethod должен иметь одну из принятых форм с помощью Tcl_GetBoolean или метода сглаживания линий. В ядре поддерживаются только true и raw (при этом bezier является псевдонимом для true ), но во время выполнения можно добавить больше . Если задано логическое значение false или пустая строка, сглаживание не применяется. Логическое значение истинности предполагает истинное сглаживание. Если метод сглаживания верен, это означает, что линия должна быть нарисована как кривая, отображаемая как набор квадратичных c сплайнов: один сплайн рисуется для первого и второго сегментов линии, один для второго и третьего, и скоро. Прямые сегменты могут быть созданы внутри кривой путем дублирования конечных точек желаемого линейного сегмента. Если метод сглаживания необработанный , это означает, что линия также должна быть нарисована как кривая, но где список координат таков, что первая пара координат (и каждая третья пара координат после этого) является узловой точкой. на кубической c кривой Безье, а другие координаты являются контрольными точками на кубической c кривой Безье. Сегменты прямых линий можно создать внутри кривой, сделав контрольные точки равными соседним узловым точкам. Если последняя точка является контрольной, а не узловой, точка повторяется (один или два раза), так что она также становится узловой точкой.

...