Содержит ли кубическая кривая Безье полностью ограничивающую рамку своих контрольных точек? - PullRequest
3 голосов
/ 14 января 2012

Вероятно, очень простой вопрос (я просто хочу убедиться, что я прав).Название не на 100% правильно, но вот что мне нужно:

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

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

Уточнение: под «прямоугольником, содержащим контрольные точки кривой» я подразумеваю прямоугольник, рассчитанный следующим образом: я принимаю минимальные координаты X и минимальные координаты Y в качестве верхней части прямоугольника.левый угол, максимальные координаты X и максимальные Y контрольных точек в виде нижнего правого угла прямоугольника.(Ось Y идет сверху вниз).Тогда я хочу убедиться, что кривая определенно лежит внутри этого прямоугольника.

Надеюсь, вы понимаете, что я имею в виду:)

Ответы [ 3 ]

8 голосов
/ 14 января 2012

Говорит Википедия :

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

Так что да.

6 голосов
/ 14 января 2012

Да, это безопасное предположение (игнорируя любые проблемы с точностью).

Степень- n Кривая Безье (назовем это A ) может быть выражена как линейная интерполяция двух степеней - ( n -1) Безье кривые (назовем их B и C ). Если B и C находятся внутри ограничительной рамки, то, очевидно, A . Но вы можете применить это рекурсивно; B и C каждая может быть выражена как линейная интерполяция двух градусов - ( n -2) кривых и т. Д. Базовый случай - это когда вы возвращаетесь к кривым степени 1, которые являются просто линейной интерполяцией самих контрольных точек.

0 голосов
/ 22 ноября 2016

Краткий ответ: да.

Для кубических кривых Безье с контрольными точками B0, B1, B2 и B3 каждая точка на кривой B (t) вычисляется по формуле:

B0*(1-t)^3 + B1*3*(1-t)^2*t + B2*3*(1-t)*t^2 + B3*t^3

Важно, что если мы посмотрим на коэффициенты, все они больше или равны 0, а их сумма равна

(1-t)^3 + 3*(1-t)^2*t + 3*(1-t)*t^2 + t^3 = 1

В математике это называется выпуклой комбинацией.Каждая точка на кривой Безье является выпуклой комбинацией контрольных точек.Множество всех выпуклых комбинаций называется выпуклой оболочкой, поэтому кривая ограничена выпуклой оболочкой контрольных точек.Выпуклая оболочка не содержит ничего выше, чем самая высокая контрольная точка, больше слева от левой контрольной точки и т. Д. Нахождение минимальных и максимальных значений x и y контрольных точек будет достаточно, чтобы найти прямоугольник, содержащийСплайн Безье.

Кстати, точки о точках, являющихся выпуклыми комбинациями контрольных точек, верны для всех кривых Безье, но вам нужно заботиться только о кубических кривых для этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...