python实现三维坐标旋转计算

空间三维坐标系旋转计算

计算空间三维坐标系变换一般都是利用旋转矩阵或者欧拉公式。python有个scipy库可以直接用于计算空间三维坐标变换。

支持库

pip install scipy

旋转矩阵计算代码

axis是旋转轴,radian旋转角度(弧度)

rot_matrix = linalg.expm(np.cross(np.eye(3), axis / linalg.norm(axis) * radian))

坐标计算代码

rot_matrix是旋转矩阵,x是坐标数组[x,y,z]

np.dot(rot_matrix,x)

完整代码

import numpy as np
import math
import scipy.linalg as linalg
import matplotlib as mpl 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

#旋转矩阵 欧拉角
def rotate_mat(axis, radian):
    rot_matrix = linalg.expm(np.cross(np.eye(3), axis / linalg.norm(axis) * radian))
    return rot_matrix
# 分别是x,y和z轴,也可以自定义旋转轴
axis_x, axis_y, axis_z = [1,0,0], [0,1,0], [0, 0, 1]rand_axis = [0,0,1]
#旋转角度
yaw = math.pi/180
#返回旋转矩阵
rot_matrix = rotate_mat(rand_axis, yaw)
print(rot_matrix)
# 计算点绕着轴运动后的点
x = [-1010,105.43,-244]
x1 = np.dot(rot_matrix,x)
# 旋转后的坐标
print(x1)   
# 计算各轴偏移量
print([x1[i]-x[i] for i in range(3)])

运行结果

在这里插入图片描述


版权声明:本文为youngdianfeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>