2015-10-21 2 views
1

В настоящее время я работаю над инструментом для создания сплайнов для нашего программного обеспечения, и мы хотим добавить новую контрольную точку в сплайн. Мы используем GDI + GraphicsPath для рисования сплайнов из набора контрольных точек. Выяснить, находится ли точка на пути сплайна, достаточно просто, но выяснение, в каком порядке добавить новую точку, так что существующий сплайн проходит через нее, является другим вопросом.Найти заказ контрольной точки в сплайне

Мы не знаем, как вычисляется сама кривая, и на данный момент имеется только существующий набор контрольных точек, новая точка и находится ли эта точка на пути кривой.

Единственное возможное решение, которое я мог бы подумать об этом, чтобы итеративно проверить, находится ли точка на кривой, состоящей из первых 2, 3, 4 .. точек кривой, и из наблюдаемых результатов вывести, между которыми существуют существующие точки , Это похоже на довольно грубый способ решения проблемы, поэтому мне было интересно, знал ли кто-нибудь о каких-либо более подходящих подходах?

Благодаря

ответ

0

Для справки, это то, что мы сделали:

Gdi + GraphicsPath имеет функцию, чтобы сгладить путь в ряд точек, которые образуют прямые отрезки, которые, кажется, чтобы гарантировать включение исходные контрольные точки.

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

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

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