3D вращение облака точек вокруг произвольной оси - PullRequest
0 голосов
/ 03 мая 2018

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

Шаги определены ниже в соответствии с https://sites.google.com/site/glennmurray/Home/rotation-matrices-and-formulas/rotation-about-an-arbitrary-axis-in-3-dimensions
(1) Переведите пространство так, чтобы ось вращения проходила через начало координат.
(2) Поверните пространство вокруг оси z так, чтобы ось вращения находилась в плоскости xz.
(3) Поверните пространство вокруг оси y так, чтобы ось вращения находилась вдоль оси z.
(4) Выполните требуемое вращение на θ вокруг оси z.
(5) Примените действие, обратное шагу (3).
(6) Примените обратную сторону шага (2).
(7) Применить действие, обратное шагу (1).

Должен ли я применить эти шаги для всех точек в облаке по одному или мне нужно найти центр для точек в облаке и затем применить? Или это дало бы одинаковый результат?

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

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

Я пытаюсь интегрировать их в PCL C ++.

...