Рисование Безье из нескольких точек - PullRequest
1 голос
/ 28 июля 2010

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

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

Ответы [ 2 ]

3 голосов
/ 29 июля 2010

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

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

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

Один из способов решения этой проблемы (никогда не пробовал сам, ПОЧЕМУ это может выглядеть не идеально, но я размышляю над головой) - это вычислить касательные по вашей-1-ые данные указывают на вашу 0-ю точку данных и находят пересечение между ней и 1-ой точкой данных во 2-ой точке данных.Затем проведите линию между 0-й точкой данных и 1-й точкой данных, используя это пересечение в качестве значения средней кривой Безье.

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

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

0 голосов
/ 05 октября 2015
  1. Представьте себе 3-точечную кривую Безье (начало-А, середина-В, конец-С)

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

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

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

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

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