参考文章: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
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)])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)