Вращение точечного облака на основе нормального вектора - PullRequest
0 голосов
/ 21 июня 2011

Я хочу повернуть трехмерное облако точек в зависимости от ориентации пола.Я обнаружил пол и рассчитал его нормальный вектор.Я хочу использовать этот нормальный вектор, чтобы все точки на полу имели одинаковое значение y.

Поскольку произведение точек двух нормализованных векторов является косинусом угла между ними, я сначала нормализую текущий вектор нормали (0,856, 0,958, 2,58), а также требуемый вектор нормали (0,0, 0,958, 0,0).Точечное произведение = 0,917 и, следовательно, угол = 70,586, но в трех измерениях это не кажется полезным.Нужно ли выполнять два поворота?Если да, есть ли какие-либо предложения относительно лучшего подхода?

1 Ответ

0 голосов
/ 21 июня 2011

Если вы хотите вращение, которое преобразует вектор нормали A в желаемый вектор нормали A', их существует бесконечное число. (При наличии одного такого поворота вы можете применить его, а затем составить его с вращениями вокруг A', чтобы получить множество других вращений, которые делают то же самое.)

Один из подходов, который хорошо работает в трехмерном пространстве, - это вычисление вектора перекрестных произведений V = A x A' (который является нормальным к плоскости, содержащей A и A'), а затем вращается вокруг V на угол A и A'. (Важно сначала проверить, что A и A' уже не совпадают.)

Здесь есть описание того, как сделать все это достаточно эффективно здесь .

...