|
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) |