Я получаю 3D очки от Kinect через OpenNI. Допустим, у меня есть:
X = [93,7819,76,8463,208,386,322,069,437,946,669,999] Y = [-260,147, -250,011, -230,717, -211,104, -195,538, -189,851] Z = [958 942 950 945 940 955]
Это те моменты, которые я смог поймать из моего движущегося мяча. Теперь я хотел бы иметь возможность вычислять что-то вроде интерполяции или наименьшего квадрата с этими точками, чтобы знать траекторию движения мяча. Затем я могу знать, куда движется мяч и где он ударит в стену.
Я не уверен, какой математический инструмент использовать и как его перевести на C ++. Я видел много ресурсов для 2D-интерполяции (кубических, …) или наименьших квадратов, но кажется, что для 3D сложнее, или я что-то упустил, может быть.
С наилучшими пожеланиями
РЕДАКТИРОВАТЬ: вопрос помечен модераторами как слишком широкий, поэтому я уменьшу область с полученными ответами: если я использую 2D полиномиальную регрессию с 3 планами отдельно (thx yephick), что я могу использовать в C ++ для его реализации?
Для того, что вас интересует, нет никакой разницы между 3D и 2D.
Все, что вы делаете, это работа с самолетами независимо (Плоскость XY, плоскость XZ и плоскость YZ). Это значительно снизит сложность и позволит вам «рисовать» намного более простые диаграммы на листе бумаги, когда вы работаете над этой проблемой.
Как только вы вычислили координаты в каждой из плоскостей, довольно просто не только согласовать координаты в трехмерном пространстве, но также получить дополнительное преимущество проверки ошибок. Например, координата X, найденная в плоскости XY, должна соответствовать (или быть «достаточно близкой») к той же координате X, найденной в плоскости XZ.
Если точность не слишком критична, вам даже не нужно идти выше, чем первая степень полиномиального приближения, используя просто простое старое арифметическое среднее двух последовательных точек.
Ты можешь использовать сплайн-интерполяция создать плавную траекторию.
Если вы не в «настроении» реализовать это самостоятельно, быстрый поиск в Google предоставит вам библиотеки с открытым исходным кодом, такие как SINTEF. SISL которые имеют такую функциональность.