Нужно определить матрицу для выравнивания двух треугольников - PullRequest
2 голосов
/ 11 октября 2011

Мне нужно определить матрицу, представляющую преобразование, необходимое для выравнивания двух известных конгруэнтных треугольников в 3D. Раньше я пытался спросить о другом подходе , но я столкнулся с множеством трудностей, поэтому сейчас я пытаюсь попробовать разные идеи.

Кто-нибудь может подсказать мне, как я могу просто создать матрицу для представления перемещения и поворота, необходимых для перемещения треугольника (DEF) в ту же позицию и ориентацию, что и другой (ABC), где A находится в начале координат?

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

первый. думать о "базовом" треугольнике. XYZ, когда X = (0,0,0), Y = (1,0,0) и Z где угодно, в зависимости от углов.
Второй. для каждого треугольника найдите способ переместить его в этот «базовый».
для DEF это, переместите D в A, используя базовое действие перемещения. вращайте вокруг z, пока E не окажется в плане xz, вращайте вокруг x, пока F не окажется в плане xy со стороны x +.
если это ясно, то вы знаете, как создать матрицу, чтобы переместить каждый треугольник в один и тот же базовый треугольник.
теперь ... если вы возьмете матрицу Идентификации, и для каждого действия, которое вы делаете над (2-й) справа от матрицы, вы будете выполнять противоположное действие слева от матрицы Идентификации, в результате вы получите матрицу для перехода от основной треугольник к вашему треугольнику.

Я надеюсь, что это делает сеанс, объяснение по-английски немного сложнее для меня ...

0 голосов
/ 11 октября 2011

Одна идея, которая приходит мне в голову (и это может быть не самый простой и не самый эффективный способ сделать что-либо), - начать с вычисления окружностей ваших треугольников. Затем уникальная линия, проходящая через них, может быть использована для построения матрицы перевода , которая позволит вам перетаскивать один треугольник на другой (возможно, делая их пересекающимися).

Поскольку у вас есть треугольники, вы также можете вычислить уравнения соответствующих плоскостей, в которых они содержатся, угол между этими плоскостями и, следовательно, также матрицу вращения , которую необходимо применить, чтобы оба треугольника в конечном итоге в одной плоскости. Наконец, вам нужно применить один последний поворот, чтобы соответствовать вашим треугольникам, которые теперь лежат в одной плоскости.

...