У меня есть данные временного ряда для положения двух объектов.Второй объект примерно следует пути первого объекта.Я хочу соединить два объекта изогнутой линией, которая наилучшим образом представляет объединенные пути двух объектов.Это постобработка, поэтому я уже знаю будущие пути обоих объектов.Я могу использовать информацию о том, где будет находиться второй объект, чтобы вычислить путь. Ссылка на файл .csv исходных данных на Google Диске - синие - это столбцы 0,1, а желтый - это 3,4.
Мои исходные данные выглядят так:
Объекты расположены достаточно равномерно.Объект два достигает позиции объекта один примерно за 50 кадров.Мой первоначальный подход состоял в том, чтобы взять последние 25 кадров объекта голубого цвета и будущие 25 кадров желтого объекта.Я использовал signal.savgol()
, чтобы сгладить результаты (показаны розовым цветом).
positions = leading_object[frame_number - 25: frame_number]
positions += trailing_object[frame_number: frame_number + 25
x,y = zip(*positions)
window_length = int(len(x)*.5)
if window_length//2 == window_length/2: window_length -= 1
x = signal.savgol_filter(x, window_length, polyorder)
y = signal.savgol_filter(y, window_length, polyorder)
positions = list(zip(x,y))
Это работает нормально, но сглаженная линия пробежки с одного пути на другой.Я бы хотел, чтобы путь был плавным.
Ссылка на полный код, используемый для создания анимации.