2010-07-28 4 views
1

У меня есть набор с 50 точками в x, y. Мне нужно нарисовать самую гладкую безье, которая проходит во всех точках, или, другими словами, безье, которая будет лучше всего соответствовать точкам.Рисование безье из нескольких точек

Как это сделать? спасибо

+1

Какие рамки вы используете? – 2010-07-28 20:43:31

+0

Я использую кварц. – SpaceDog

ответ

3

Я испытываю аналогичную проблему в 3D. Это немного проще в 2D, потому что линии всегда пересекаются, если не параллельны.

Во-первых, прочитайте квадратичные кривые Безье. Каждая кривая представлена ​​тремя точками. Линия не пройдет через среднюю точку. Таким образом, ваша средняя точка не может быть одной из тех точек, которые вы пытаетесь приспособить, или она не пройдет через нее.

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

Один из способов решения этой проблемы (никогда не пробовал сам ХЕНС, это может показаться не совсем идеальным, но Im, думая, что с моей головы), заключается в том, чтобы вычислить касательные от вашей -1-й точки данных до вашей 0-й точки данных и найти пересечение между ними и 1-й точкой данных ко второй точке данных. Затем проведите линию между 0-й точкой данных и 1-й точкой данных, используя это пересечение в качестве значения кривой среднего безье.

Очевидно, что у вас могут возникнуть проблемы на концах кривых, что может потребовать некоторого изобретательского мышления, чтобы они выглядели хорошо. (первая точка не имеет -1-й точки).

Извините за отсутствие диаграмм. Я бы нарисовал один, но я на iPad.

+0

спасибо! это поможет. – SpaceDog

0
  1. Представьте, 3-точечные кривые Безье (старт-А, со средним уровнем В, С-конец)

  2. Представьте себе прямую линию от А до С

  3. Представьте себе прямую линию, перпендикулярна к сети переменного тока и проходит через точку В.

  4. Эти две линии пересекаются в точке D.

Кривая Безье будет проходить ТОЧНО на полпути от D до B. Другими словами, если вы хотите, чтобы кривая Безье проходила через 3 точки, вы должны сделать вторую точку в 2 раза дальше от начала и конца, чем фактическая вторая точка.

Смежные вопросы