您可以使用4 x 4转换矩阵,该矩阵是不可逆的,并且可以在所需的两个坐标系之间进行双向转换。
如果你知道的三个旋转a
,b
并且g
,关于x
,y
,z
分别采用右手法则。的x0
,y0
,z0
是两个坐标系的原点的翻译。
转换矩阵定义为:
T = np.array([[ cos(b)*cos(g), (sin(a)*sin(b)*cos(g) + cos(a)*sin(g)), (sin(a)*sin(g) - cos(a)*sin(b)*cos(g)), x0],
[-cos(b)*sin(g), (cos(a)*cos(g) - sin(a)*sin(b)*sin(g)), (sin(a)*cos(g) + cos(a)*sin(b)*sin(g)), y0],
[ sin(b), -sin(a)*cos(b), cos(a)*cos(b), z0]
[ 0, 0, 0, 1])
为了有效地使用它,您应该将点放置在二维数组中,例如:
orig = np.array([[x0, x1, ..., xn],
[y0, y1, ..., yn],
[z0, z1, ..., zn],
[ 1, 1, ..., 1]])
然后:
new = T.dot(orig)
将为您提供转换点。