Смотрите эту картинку.При этом кубоид должен вращаться вдоль других осей, которые были отмечены на рисунке, но он остается на той же оси x, y, z Прикрепленное изображение дает код кубоида .
##defining to plot the cuboid
def plot_cuboid(center, size):
"""
Create a data array for cuboid plotting.
============= ================================================
Argument Description
============= ================================================
center center of the cuboid, triple
size size of the cuboid, triple, (x_length,y_width,z_height)
:type size: tuple, numpy.array, list
:param size: size of the cuboid, triple, (x_length,y_width,z_height)
:type center: tuple, numpy.array, list
:param center: center of the cuboid, triple, (x,y,z)
"""
# suppose axis direction: x: to left; y: to inside; z: to upper
# get the (left, outside, bottom) point
ox, oy, oz = center
l, w, h = size
##defining the points
x = np.linspace(ox-l/2,ox+l/2,num=10)
y = np.linspace(oy-w/2,oy+w/2,num=10)
z = np.linspace(oz-h/2,oz+h/2,num=10)
## defining surfaces and extrude them
x1, z1 = np.meshgrid(x, z)
y11 = np.ones_like(x1)*(oy-w/2)
y12 = np.ones_like(x1)*(oy+w/2)
x2, y2 = np.meshgrid(x, y)
z21 = np.ones_like(x2)*(oz-h/2)
z22 = np.ones_like(x2)*(oz+h/2)
y3, z3 = np.meshgrid(y, z)
x31 = np.ones_like(y3)*(ox-l/2)
x32 = np.ones_like(y3)*(ox+l/2)
ax = fig.gca(projection='3d') ##plot the project cuboid
#plot outside surface
ax.plot_surface(x1, y11, z1, color='red', rstride=1, cstride=1, alpha=0.6)
#plot inside surface
ax.plot_surface(x1, y12, z1, color='white', rstride=1, cstride=1, alpha=0.6)
#plot bottom surface
ax.plot_surface(x2, y2, z21, color='blue', rstride=1, cstride=1, alpha=0.6)
#plot upper surface
ax.plot_surface(x2, y2, z22, color='black', rstride=1, cstride=1, alpha=0.6)
#plot left surface
ax.plot_surface(x31, y3, z3, color='green', rstride=1, cstride=1, alpha=0.6)
#plot right surface
ax.plot_surface(x32, y3, z3, color='pink', rstride=1, cstride=1, alpha=0.6)
## Add title
plt.title('Plot_for_PSM', fontsize=20)
##labelling the axes
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
`
Мой вопрос заключается в том, можем ли мы повернуть кубоид, который был определен ниже, с углами Эйлера в python?
center = (2.1, -0.1,0.757761)длина = 0,3, ширина = 0,4, высота = 0,1 все в метрах.согласно коду в приложенном изображении.Углы Эйлера равны 0,0,120, например, в направлениях x, y, z.
Я сделал некоторую программу для поворота кубоида с углами Эйлера.Но после достижения углов Эйлера, как я могу повернуть кубоид, это мой вопрос.Кто-нибудь может предложить или получить код для этой проблемы?
На самом деле, у меня есть кватернионы, которые преобразуются в углы Эйлера, а затем я хочу вращаться в соответствии с этими углами Эйлера вдоль их осей с правилом правой руки.Вы можете просмотреть мой код там, где я сделал, а также можете предложить, если что-то не так я сделал.
В коде 'y' представляет угол с осью x, 'p' представляет угол с yось, 'r' представляет угол с осью z.ожидаемый результат состоит в том, что кубоид должен вращаться вдоль этих углов эйлера (y, p, r) относительно оси x, y, z.
Заранее спасибо!