Предположим, у меня есть две точки в трехмерном пространстве (a и b) и фиксированный вектор оси/единицы, называемый n.Вращающаяся матрица, которая минимизирует расстояние
Я хочу создать матрицу поворота, которая минимизирует расстояние между точкой а (без вращения) и повернутой точкой b.
например:
Q := matrix_from_axis_and_angle (n, alpha);
find the unknown alpha that minimizes sqrt(|a - b*Q|)
Btw - Если решение/алгоритм может быть проще выражается единичными-кватернионов идти вперед и использовать их. Я просто использовал матрицы, чтобы сформулировать свой вопрос, потому что они более широко используются.
О - Я знаю, что есть некоторые случаи выродились (а или б, лежащий в точности в соответствии с п ЭСТОМ.) Они могут быть проигнорированы. Я просто ищу случай, когда можно вычислить одно решение.
Предполагая, что все обороты имеют о происхождении, если вы вращаете b так, чтобы он попадал на вектор в a, это не обеспечивало минимальное (или максимальное) расстояние? –
Или мы предполагаем, что n исправлено? –
n исправлено ... к сожалению, я не могу его изменить. В противном случае это было бы очень просто. –