Я пытаюсь вращать весь сценарий py-игры, точка за точкой, чтобы симулировать трехмерное пространство. Я заметил, однако, что простые матрицы вращения просто не преуспевают в долгосрочной перспективе. Если я проведу тестовый код ниже, орбитальный круг будет стремиться «упасть» к центру своей орбиты. Это странно для меня, потому что я сделал эту работу в более простых средах (геогебра), и я чувствую, что это должно работать еще лучше с питоном.
Тестовый код будет:
import time
import numpy as np
import pygame
pygame.init()
#screensize
screensize = (width,height)=(600,600)
center=(int(width/2),int(height/2))
screen = pygame.display.set_mode(screensize)
#delta mov
do=0.1
#orbiting point
k=[100,100]
run=True
while run:
pygame.time.delay(20)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run=False
#rotation
k[0]=np.cos(do)*k[0]-np.sin(do)*k[1]
k[1]=np.sin(do)*k[0]+np.cos(do)*k[1]
pygame.draw.circle(screen,(255,255,255),(int(k[0]+center[0]),int(k[1]+center[1])),5)
pygame.display.update()
screen.fill((0,0,0))
pygame.quit()
Конечно, я могу справиться с проблемой, уменьшив time.delay и угол поворота, чтобы сделать лучшие приближения, но это не вариант для всего моделирования, который я пытаюсь нарисовать, так как это потребовало бы много ресурсов от моего довольнобазовый ноутбук ... боюсь, я просто многого прошу в библиотеку.
¿Есть ли какие-либо предложения о том, как решить эту проблему? Using Это плохая идея - использовать функции numy для синуса и косинуса?
Может быть, я просто глуп, и что-то не так, что я не могу заметить!
Я не эксперт, поэтому я был бы очень признателен, если бы было какое-то решение, не требующее дополнительных библиотек.
Спасибо за вашу помощь!