Расчет углов поворота с предоставлением вершин - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть 4 точки (черный A, черный B, черный C и черный D), которые являются вершинами повернутого красного квадрата.Можно ли определить, какие три угла (угол x, угол y и угол z) использовались для поворота красного квадрата в черный?В этом случае углы были: X = 1rad Y = 0.2rad Z = 0.3rad enter image description here

РЕДАКТИРОВАТЬ: у меня просто четыре черные точки, а не красные.Единственное, что я знаю о красном квадрате, это то, что это квадрат

1 Ответ

0 голосов
/ 21 февраля 2019

Есть способ найти аффинную матрицу, необходимую для преобразования набора точек в другую.Имея natrix, вы можете найти углы.

Описание для 2D кейса здесь , 3D кейс похож.

 M * A = B

где

    | xa xb xc xd|
 A =| ya yb yc yd|
    | za zb zc zd|
    | 1  1  1  1 |

    | xa' xb' xc' xd'|
 B =| ya' yb' yc' yd'|
    | za' zb' zc' zd'|
    |  1   1   1   1 |

Чтобы найти неизвестный M, мы можем умножить обе части выражения на обратную матрицу A

 M * A * Inv(A) = B * Inv(A)
 M = B * Inv(A)

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

...