Проецируйте 3D Вектор в ориентацию объекта
Поэтому в настоящее время я пытаюсь спроецировать трехмерный вектор (полученный с помощью акселерометра) на ориентацию объекта (полученную путем интегрирования угловой скорости, полученной с помощью гироскопа объекта, возвращенного как трехмерный вектор). Однако я не совсем уверен, как это сделать.
Я сейчас использую электронную таблицу Excel, чтобы узнать, каких результатов можно ожидать от данных теста, которые будут импортированы в программу, над которой я работаю.
1 ответ
Проецирование вектора v на другой вектор p так же просто, как вычисление скалярного произведения первого с вектором единичной длины в направлении последнего np:
vp = (v.np)np = (v.p / ||p||2)p
По компонентам это:
// Dot product of v and p
vdp = v.x*p.x + v.y*p.y + v.z*p.z
// Square norm of p
p2 = p.x*p.x + p.y*p.y + p.z*p.z
// Projection
vp.x = (vdp / p2) * p.x
vp.y = (vdp / p2) * p.y
vp.z = (vdp / p2) * p.z
Длина самой проекции v.np, который равен vdp / sqrt(p2)
,