1. 程式人生 > 其它 >python實現三維座標旋轉計算

python實現三維座標旋轉計算

技術標籤:Python運用例項三維座標旋轉矩陣python計算scipy座標轉換

空間三維座標系旋轉計算

計算空間三維座標系變換一般都是利用旋轉矩陣或者尤拉公式。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)])

執行結果

在這裡插入圖片描述