быстрые кривые Безье - PullRequest
       35

быстрые кривые Безье

2 голосов
/ 12 марта 2012

Чем больше контрольных точек на кривой Безье, тем меньше вблизи любой заданной контрольной точки кривая достигает.

Например, двухточечная (линейная) кривая достигает обеих контрольных точек.Трехточечная (квадратичная) кривая образует дугу, между тремя точками, для меня это идеально, она не следует точно по линии, так как тогда это не будет кривая, однако между контрольными точками существует сильная визуальная связьи линия.

С 4-точечной (кубической) кривой с контрольными точками в зигзагообразном направлении, однако результирующая линия намного более прямая.Расширено использование 100 контрольных точек в зигзагообразном направлении. Кривая почти полностью прямая.

Чтобы остаться с примером зигзагообразного, есть один способ сформировать искомую кривую, которая в данном случаеВыглядит как менее агрессивно сглаженный зигзаг, чем полученная контрольная точка 100, кривая Безье, будет разбивать форму на множество маленьких 3-точечных кривых Безье, интерполируя между ними на концах.

Есть ли C #,псевдокод или даже просто больше информации в простой форме, доступной для выполнения более сложной задачи, связанной с кривой Безье?

1 Ответ

6 голосов
/ 12 марта 2012

Что-то очень простое в реализации - построение кривой с использованием квадратичных дуг Безье

enter image description here

В основном вы используете средние точки между исходными вершинами в качестве начала / остановки каждой дуги и исходные вершины в качестве контрольной точки для дуги. Этот выбор гарантирует непрерывность касательной и оставляет большой контроль над формой кривой.

Также вы можете легко получить острые углы, используя две последовательные исходные вершины с одинаковыми координатами.

...