Кривая Безье является параметрической кривой, а это означает, что существует параметр t
, по которому можно вычислить многочлены, чтобы узнать положения точек, лежащих на кривой.
Полиномы для некоторых распространенных случаев можно найти по адресу en.wikipedia.org/wiki/B% C3%A9zier_curve#Specific_cases
Чтобы нарисовать кривую Безье на экране, можно вычислить полиномы от 0
до 1
при постоянном увеличении t
на крошечные маленькие шаги. Однако это было бы очень расточительно, так как в общем случае параметр «пространство» не соответствует экранному «пространству», т.е. на один пиксель может приходиться несколько шажков.
Мой вопрос: как найти наименьший шаг, который увеличивает декартово расстояние от предыдущей точки хотя бы на 1 пиксель?
Другими словами: я хотел бы нарисовать кривую Безье на экране. Как выбрать (равномерный) шаг, на который должно расти t
, чтобы я никогда не рисовал на один пиксель больше одного раза? Я не против "дырок", когда t
растет слишком быстро, просто не хочется перерисовывать уже нарисованные пиксели.
Изменить
Под «как найти» я подразумеваю O(1). Да, я мог бы использовать алгоритм де Кастельжау, но я надеялся, что есть способ "угадать "оптимальный t
шаг быстро.
t
в каждой точке, а затем увеличилt
на величину, дающую производную по крайней мере для одного пикселя (либо по x, либо по y). Если кривая быстро изгибается относительно размера пикселя, это не сработает. - person jozxyqk   schedule 10.07.2015