2015-01-17 4 views
1

У меня есть набор точек (X, Y, Z вершин), которые я могу прочитать из файла STL в MATLAB. Это точки, составляющие куб.Найти угол поворота куба

Я хочу знать угол, с помощью которого этот куб мог бы вращаться с осью X/Y/Z.

Может ли кто-нибудь дать какие-либо указания, как это можно сделать?

Спасибо

+3

Это хороший вопрос, но более математический, чем программирование. – Rashid

+0

Я полагаю, что с помощью 'min' и' max' в разных измерениях вы можете обнаружить некоторые «углы» куба. Затем оттуда выработайте «боковую линию» и, наконец, получите угол этих линий с нормальным «X, Y, Z» референтом ... просто догадка, возможно, более простое решение. – Hoki

ответ

1

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

Итак, теперь у вас есть ваша система координат XYZ (заданная тремя векторами столбцов, которые образуют матрицу A) и вашей системой координат куба (задается матрицей C). Если вы хотите преобразование матрицы T, которое соединяется с двумя, вы можете решить матричное уравнение C = T*A. Поскольку A - это только единичная матрица, мы имеем T = C. Если вы хотите, чтобы фактические углы вы могли выровнять оси один за другим с rotation matrices, используя один и тот же процесс инверсии матрицы.

1

Чтобы узнать, как куб вращается относительно оси X/Y/Z, сначала необходимо создать локальную систему координат для куба, что можно легко сделать в следующих шагах, если вы знаете все 8 угловых точек куба и как они связаны друг с другом для формирования куба.

1) Выберите любую точку из 8 точек, обозначите это как P0.

2) Должно быть еще 3 точки, которые соединены с P0. Обозначим эти 3 точки как P1, P2 и P3.

3) Создайте векторы от P0 до P1, P2 и P3 и объедините эти 3 вектора. Эти 3 единичные векторы, обозначенные как v1, v2 и v3, должны быть ортогональны друг другу и могут использоваться как локальная система координат для куба. Вы можете назначить v1, v2 и v3 в качестве осей x, y и z для локальной системы координат, но вы должны убедиться, что они следуют правилу правой руки.

4) Теперь у вас есть локальная система координат, вы можете легко вычислить углы относительно исходной системы координат.