Как заставить вращаться тор с помощью OpenGL на языке Python?
Реализую по учебному заданию сцену, в которой тор и икосаэдр должны вращаться вокруг неподвижного цилиндра. Однако на деле у меня в сцене вращается цилиндр вокруг неподвижного тора (а икосаэдр не виден и неподвижен).
Не стану приводить код целиком. Вначале создаю окно, настраиваю параметры OpenGL. Есть функция draw_scene()
(устанавливаю позицию камеры, отрисовываю тор и икосаэдр, вкладываю функцию rotate_objects()
для вращения и перемещения объектов.
Функция rotate_objects()
определяет условия для вращения объектов. Но работает явно неверно. В чем ошибка? Ниже финальный код скрипта:
# Функция для вращения объектов
def rotate_objects():
global rotation_angle
# Вычислим угол поворота в радианах
angle_rad = math.radians(rotation_angle)
# Рассчитаем положение цилиндра
cylinder_x = 2 * math.sin(angle_rad)
cylinder_y = 0
cylinder_z = 2 * math.cos(angle_rad)
# Вращение объектов вокруг цилиндра
glPushMatrix()
glTranslatef(cylinder_x, cylinder_y, cylinder_z)
glRotatef(rotation_angle, 0, 1, 0)
# Отрисовка цилиндра
glColor3f(1, 0, 0)
gluCylinder(gluNewQuadric(), 0.5, 0.5, 1, 32, 32)
glPopMatrix()
# Основной цикл программы
rotation_angle = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
update_scene()
draw_scene()