File size: 673 Bytes
99afdfe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import numpy as np
import math
import scipy.linalg as linalg


def rotate_mat(axis, radian):

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

    rot_matrix = linalg.expm(a)

    return rot_matrix

def aaa2mat(axis, sin, cos):
    i = np.eye(3)
    nnt = np.dot(axis.T, axis)
    s = np.asarray([[0, -axis[0,2], axis[0,1]],
                    [axis[0,2], 0, -axis[0,0]],
                    [-axis[0,1], axis[0,0], 0]])
    r = cos * i + (1-cos)*nnt +sin * s
    return r

rand_axis = np.asarray([[1,0,0]])
#旋转角度
r = math.pi/2
#返回旋转矩阵
rot_matrix = rotate_mat(rand_axis, r)
r2 = aaa2mat(rand_axis, np.sin(r), np.cos(r))
print(rot_matrix)