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