2016-03-12 5 views
-2

Я работаю над встроенной системой, задача которой связана с интересной проблемой. Он знает начальное расположение трех точек на сфере. После поворота сферы он знает расстояние, на котором эти точки изменились. Это должно быть разрешимо для двух решений, и у меня есть метод, сформированный для устранения одного из них. От этого мне было поручено решить текущую ориентацию сферы.Решите для угла поворота вокруг произвольной оси

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

+1

http://math.stackexchange.com/ вы должны спросить, я думаю. – Rames

ответ

0

Вы можете решить для вращения в форме (ось, угол). Чтобы повернуть точку p, она разбивает ее на

p|| = axis·(axis·p) 
p⊥ = p-p|| 

и вращает только p⊥ в своей плоскости. Используя закон косинусов, вы можете получить расстояние между р и p.rotated в

distance^2 =|p⊥|^2 * 2(1-cos(angle)) 
where |p⊥| = |axis x p| 

Это дает 3 полиномиальные уравнения с axis.x, axis.y, axis.z и 1-соз (угол) (обратите внимание, что вам не нужно явно определять угол). Поскольку ось должна иметь длину 1, вам нужно еще одно уравнение

axis.x^2 + axis.y^2 + axis.z^2 = 1 

Я не могу сказать прямо, если это решаемая аналитически (с многочленами только аналитически разрешимы с точностью до 4-й степени). Вы можете подключить его к Wolfram Alpha и проверить.

Смежные вопросы