|
Интерполяция кривой в пространстве, Построение максимально гладкой кривой по набору точек X, Y, Z |
|
|
|
Mar 1 2012, 19:15
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513

|
Добрый день. бьюсь с такой алгоритмической задачей: Задан случайный массив точек в пространстве, т.е. коррдинат X, Y, Z, плюс начальный вектор движения, больше ничего. Требуется интерполировать по ним график (т. е. провести условный летающий объект через все точки), желательно с непрерывностью до второй производной. Мое видение возможных подходов:
1) Введение четвёртой независимой переменной, например времени, и интерполяция отдельно функций x(t), y(t), z(t). Подробно не прорабатывал, но так как время прохождения точек неизвестно (более того, это время нужно найти в ходе решения), предполагаю что данный метод мне не подходит.
2) Интерполяция двух координат от третьей, например y(x) и z(x). Пробовал реализовать, в соответствующих плоскостях YOX и ZOX получаются гладкие кривые, но построенная по ним трехмерная кривая имеет в некоторых точка изломы (возможно в некоторых точках они просто видимы невооруженным глазом, а на самом деле присутствуют везде и данный подход совсем не подходит для задачи построения гладкой траектории).
Вообщем я в замешательстве. Какой из подходов стоит развивать, есть ли другие варианты решения?
|
|
|
|
|
 |
Ответов
|
Mar 10 2012, 08:05
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513

|
Спасибо всем за советы, задача в общих чертах решилась, осталось на нее навешивать дополнительные плюшки. Рассматривал движение точки под поперечным ускорением, массу и силу вводить не пришлось, оперировал исключительно скоростью, ускорением и вызванным ими прирощением координаты. Вектор скорости под действием ускорения плавно поворачивался в сторону цели, и когда угол между скоростью и направлением на цель становился меньше порога, ускорение отключалось. Решил задачу сперва для плоскости, увидел что при переходе к пространству я зароюсь с геометрией, и схитрил: на каждом отрезке строил плоскость, заданную вектором входной скорости и самим отрезком, работал с ней, потом пересчитывал обратно к трехмерным координатам.
От изначальной навязчивой идеи интерполировать траекторию теми же сплайнами пришлось отказаться, математика все таки слишком далеко от логики полёта реального объекта, имеющего скорость, инерцию, ограниченные перегрузки
|
|
|
|
|
Mar 12 2012, 19:24
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513

|
Цитата(scifi @ Mar 11 2012, 12:10)  Кстати, в отдельных случаях точка может пролетать мимо цели и делать большую петлю. Если это нежелательно, то, возможно, нужно увеличивать ускорение или даже ставить его в зависимость от расстояния от начальной точки до конечной. Да, если расстояние слишком маленькое начинает нарезать круги пока по таймауту не вылетит. Пока единственное очевидное решение этой проблемы (с учетом что максимальное ускорение превышать нельзя) это вводить между близкими точками промежуточую на некотором расстоянии от обоих, так чтобы получившиеся отрезки беспроблемно проходились. На днях планирую добраться до этого.
|
|
|
|
Сообщений в этой теме
Jack_of_Shadows Интерполяция кривой в пространстве Mar 1 2012, 19:15 scifi Можно наделить точку массой и дать ей реактивный д... Mar 1 2012, 20:22 AndreyVN Цитата(Jack_of_Shadows @ Mar 1 2012, 22:1... Mar 2 2012, 17:28 Jack_of_Shadows ЦитатаВидимо, есть еще какой-то критерий оптимизац... Mar 2 2012, 21:30 AndreyVN Цитата(Jack_of_Shadows @ Mar 3 2012, 00:3... Mar 3 2012, 19:01 Mc_off Мне кажется подойдет сплайновая интерполяция. По к... Mar 3 2012, 05:38   scifi Цитата(Jack_of_Shadows @ Mar 12 2012, 23... Mar 12 2012, 19:50 Jack_of_Shadows Даже с моим небольшим знанием физики про центростр... Mar 14 2012, 19:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|