Math 三维刚体变换分解重排序
我脑子里有这个想法,我正在努力想办法实现它。我正在努力解决的一个问题是如何进行三维刚体变换,并将其分解为dx、dy、dz、θX、θY和θZ 这当然是一个非常好的文档算法。我的问题是矩阵代数是非交换的。我想对组件进行重新排序,使其成为(dx*dy*theta\u Z)*(dz*theta\u X*theta\u Y)Math 三维刚体变换分解重排序,math,image-processing,linear-algebra,Math,Image Processing,Linear Algebra,我脑子里有这个想法,我正在努力想办法实现它。我正在努力解决的一个问题是如何进行三维刚体变换,并将其分解为dx、dy、dz、θX、θY和θZ 这当然是一个非常好的文档算法。我的问题是矩阵代数是非交换的。我想对组件进行重新排序,使其成为(dx*dy*theta\u Z)*(dz*theta\u X*theta\u Y) 对于任何想知道我为什么要这样做的人来说,是因为我想在3D图像上应用变换(dx*dy*thetaz),然后再进行另一个操作,然后完成刚体变换。有人知道怎么做吗?如果我做对了,你想将XY
对于任何想知道我为什么要这样做的人来说,是因为我想在3D图像上应用变换(dx*dy*thetaz),然后再进行另一个操作,然后完成刚体变换。有人知道怎么做吗?如果我做对了,你想将XY平面变换与3D变换分开,这只有在首先应用
theta_Z
旋转时才可能(因为你希望它是第一个)。如果不是,则需要首先转换欧拉角的顺序,例如:
由于您没有提供任何具体数据,也没有提供MCVE,因此我无法提供更多详细信息,因为可能的解决方案有很多种组合。如果我没有弄错,您希望将XY平面变换与3D变换分开,而3D变换只有在首先应用
theta_Z
旋转时才可能(如您所希望的那样)。如果不是,则需要首先转换欧拉角的顺序,例如:
由于您没有提供任何具体数据,也没有提供MCVE,因此我无法提供更多详细信息,因为可能的解决方案有很多种组合。如果您首先将旋转分解为所需的顺序(
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
如果您首先将旋转分解为所需的顺序(
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