Изменение порядка декомпозиции преобразования трехмерного твердого тела - PullRequest
1 голос
/ 28 мая 2020

У меня в голове возникла эта идея, и я пытаюсь придумать, как ее реализовать. Одна из частей, с которой я борюсь, - это как взять трехмерное преобразование твердого тела и разложить его на dx, dy, dz, theta_X, theta_Y и theta_Z .

Это, конечно, очень хороший алгоритм документа. Моя проблема в том, что матричная алгебра некоммутативна. Я хотел бы переупорядочить компоненты так, чтобы он выглядел (dx * dy * theta_Z) * (dz * theta_X * theta_Y) .

Для любого из вас, кто хочет знать, почему я хочу это сделать, потому что я хотел бы применить преобразование (dx * dy * theta_Z) on трехмерное изображение, за которым следует другая операция, за которой следует завершение преобразования твердого тела. Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Если вы сначала разложите свою ротацию на желаемый порядок (theta_Z * theta_X * theta_Y), будет достаточно просто изменить порядок любого перевода так, как вы хотите:

let:   t' = theta_Z^-1 * t * theta_Z

then:  t * theta_Z = theta_Z * t' 

and:   t * theta_Z * theta_X * theta_Y
     = theta_Z * t' * theta_X * theta_Y

Однако для конкретного переупорядочивания, которое вы хотите, обратите внимание, что вращение вокруг оси Z вообще не должно влиять на чистый перенос вокруг оси Z! Несмотря на то, что общие преобразования твердого тела не коммутируют, ваши преобразования dz и theta_Z работают:

commutative:  dz * theta_Z = theta_Z * dz

and:  my_transform = dx * dy * dz * theta_Z * theta_X * theta_Y
                   = dx * dy * theta_Z * dz * theta_X * theta_Y
0 голосов
/ 29 мая 2020

Если я правильно понял, вы хотите изолировать преобразование плоскости XY отдельно от 3D-преобразования, которое возможно, только если сначала применяется поворот theta_Z (как вы хотите, чтобы оно было первым). Если нет, то вам нужно сначала преобразовать порядок углов Эйлера, например, следующим образом:

Если вы не знаете переводы, вы можете получить их непосредственно из матрицы см .:

теперь это просто вопрос использования переводов в системе координат corect (зависит от порядка ваших преобразований)

Поскольку вы не предоставили никаких конкретных c данных или MCVE, я не могу go подробнее, так как комбинаций возможных решений довольно много.

...