Как с помощью OpenGL языка Python заставить икосаэдр вращаться правильно?
У меня задача заставить вокруг цилиндра вращаться тор и икосаэдр. И у меня получается, что эти две фигуры постоянно пронзают стенки цилиндра, проходя сквозь него. Надо же так, чтобы (1) тор с икосаэдром двигались рядом, но сквозь него не проходили и чтобы (2) двигались по орбитам, а не вокруг своей оси как тор. Что не так в коде? Публикую фрагмент функции, обеспечивающей вращение фигур.
# Определение переменных
rotation_angle = 0
orbit_plane = random.choice(['xy', 'xz', 'yz'])
icosahedron_angle = 0
torus_angle = 0
cylinder_rad = 1.5
circle_radius = cylinder_rad * 2
# Функция для вращения объектов
def rotate_objects():
global rotation_angle
global icosahedron_angle
global torus_angle
global cylinder_rad
global circle_radius
global rotation_angle
global orbit_plane
if orbit_plane == 'xy':
glRotatef(rotation_angle, 0, 0, 1)
elif orbit_plane == 'xz':
# glRotatef(rotation_angle, 0, 1, 0)
glTranslatef(-circle_radius*math.cos(icosahedron_angle), circle_radius*math.sin(icosahedron_angle), 0) # БРАТЬ ЭТОТ
elif orbit_plane == 'yz':
# circle_radius*math.cos(icosahedron_angle), -circle_radius*math.sin(icosahedron_angle)
# glRotatef(rotation_angle, 1, 0, 0)
glRotatef(45, 0, 0, 1) # БРАТЬ ЭТОТ
if rotation_angle >= 360:
rotation_angle = 0
orbit_plane = random.choice(['xy', 'xz', 'yz'])
# обновляем углы вращения икосаэдра и тора
icosahedron_angle += 0.01
torus_angle += 0.01
закомментированы строки с моими попытками решить поставленные задачи