Я пытаюсь выяснить трехмерное вращение облака точек вокруг произвольной оси.
Я действительно близок к пониманию всей математики, но пока нет.
Шаги определены ниже в соответствии с 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 ++.