Как найти математическую функцию, определяющую кривую Безье - PullRequest
4 голосов
/ 06 декабря 2009

Я пытаюсь реализовать кривую Безье и тест пересечения отрезков. Самое близкое, что я нашел, - это взять кривую Безье (для простоты ограничим ее тремя контрольными точками), найти математическую функцию, генерирующую эту кривую, и поместить ее в исходное положение. Затем, используя функцию для отрезка как другую функцию, пусть они будут равны, и решите уравнение.

Во многих источниках указано вышеупомянутое решение (если я не понял их неправильно), моя проблема в том, что я не могу найти способ вычислить математическую функцию, которая генерирует кривую Безье.

О, и, пожалуйста, укажите, полностью ли я не в курсе, обнаружив точку (и) пересечения.

1 Ответ

12 голосов
/ 06 декабря 2009

Кривая Безье является параметрической функцией. Квадратичная кривая Безье (т.е. три контрольные точки) может быть выражена как: F (t) = A (1 - t) ^ 2 + 2B (1 - t) t + Ct ^ 2 , где A , B и C являются точками, а t переходит от нуля к единице.

Это даст вам два уравнения:

x = a (1-t) ^ 2 + 2b (1-t) t + ct ^ 2

y = d (1 - t) ^ 2 + 2e (1 - t) t + ft ^ 2

Если добавить к этому, например, уравнение строки ( y = kx + m ), вы получите три уравнения и три неизвестных ( x , у и т ).

...