Линейная интерполяция в реальном времени с трехмерным серводвигателем

Как мы знаем в обычной линейной интерполяции, конечный пункт назначения является фиксированным. Я хочу использовать камеру, чтобы ловить движущиеся объекты, и координата может быть конечным пунктом назначения. Кто-нибудь может помочь мне закончить этот алгоритм в коде C?

1 ответ

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

1) Определите декартовы (XYZ) координаты начальной и конечной точек.

2) Вычислить последовательность линейных интерполяций между начальной и конечной точкой в ​​декартовом пространстве. Это последовательность точек в декартовом пространстве, которые оценивают траекторию объекта.

3) Преобразовать последовательность декартовых точек из декартовой системы координат в сферическую систему координат.

4) Сферические координаты Theta и Phi - это углы, по которым ваша камера должна перемещаться во времени.

Все описанные выше вычисления являются простыми и замкнутыми. Вам не нужно применять какие-либо методы программирования "в реальном времени" в стороне от базовых понятий, таких как отсутствие динамического распределения и интерпретируемых языков или языков сборки мусора. Если надежность очень важна, вам нужно использовать подходящую ОС реального времени. У Linux есть хороший патч в реальном времени, который обеспечивает довольно хорошую производительность в реальном времени.

Другие вопросы по тегам