Линейная интерполяция в реальном времени с трехмерным серводвигателем
Как мы знаем в обычной линейной интерполяции, конечный пункт назначения является фиксированным. Я хочу использовать камеру, чтобы ловить движущиеся объекты, и координата может быть конечным пунктом назначения. Кто-нибудь может помочь мне закончить этот алгоритм в коде C?
1 ответ
Предполагая, что вы пытаетесь отследить движущийся объект с помощью карданной камеры, проблема заключается в несоответствии между предположением о линейной постоянной скорости и движением камеры. Даже если ваш объект движется с постоянной скоростью, камера должна вращаться с непостоянной скоростью, чтобы отслеживать объект. Например, камера должна будет быстро вращаться, когда объект находится рядом с камерой, но будет вращаться очень медленно, когда объект находится далеко.
1) Определите декартовы (XYZ) координаты начальной и конечной точек.
2) Вычислить последовательность линейных интерполяций между начальной и конечной точкой в декартовом пространстве. Это последовательность точек в декартовом пространстве, которые оценивают траекторию объекта.
3) Преобразовать последовательность декартовых точек из декартовой системы координат в сферическую систему координат.
4) Сферические координаты Theta и Phi - это углы, по которым ваша камера должна перемещаться во времени.
Все описанные выше вычисления являются простыми и замкнутыми. Вам не нужно применять какие-либо методы программирования "в реальном времени" в стороне от базовых понятий, таких как отсутствие динамического распределения и интерпретируемых языков или языков сборки мусора. Если надежность очень важна, вам нужно использовать подходящую ОС реального времени. У Linux есть хороший патч в реальном времени, который обеспечивает довольно хорошую производительность в реальном времени.