Координаты куба хранятся в виде вершин:
Код: Выделить всё
cube_vertices = np.array([[0, 0, 0],
[1, 0, 0],
[1, 1, 0],
[0, 1, 0],
[0, 0, 1],
[1, 0, 1],
[0, 1, 1],
[1, 1, 1]])
Код: Выделить всё
cube_edges = np.array([[cube_vertices[0], cube_vertices[1]],
[cube_vertices[0], cube_vertices[3]],
[cube_vertices[1], cube_vertices[2]],
[cube_vertices[3], cube_vertices[2]],
[cube_vertices[1], cube_vertices[5]],
[cube_vertices[2], cube_vertices[7]],
[cube_vertices[3], cube_vertices[6]],
[cube_vertices[0], cube_vertices[4]],
[cube_vertices[4], cube_vertices[5]],
[cube_vertices[4], cube_vertices[6]],
[cube_vertices[6], cube_vertices[7]],
[cube_vertices[5], cube_vertices[7]]])
Код: Выделить всё
phi, theta = 0.1, 0.1
Rx = np.tile(np.array([[1, 0, 0],
[0, np.cos(theta), -np.sin(theta)],
[0, np.sin(theta), np.cos(theta)]]), (12, 2, 1, 1))
Ry = np.tile(np.array([[np.cos(phi), 0, np.sin(phi)],
[0, 1, 0],
[-np.sin(phi), 0, np.cos(phi)]]), (12, 2, 1, 1))
Rxy = Rx * Ry
Код: Выделить всё
rotated_edges = np.tensordot(Rxy, cube_edges)
Подробнее здесь: https://stackoverflow.com/questions/790 ... f-a-tensor