Я пытаюсь сделать анимацию / симуляцию вертикальной силы пружины в Pygame на основе моих расчетов в Python.
Код, кажется, работает, но он не очень гладкий, и мяч выходит из «холста». Буду признателен за вашу помощь:)
(мы должны использовать метод Эйлера-Кромера, но он не так важен в анимации)
Я использую Mu для программирования анимации,
] 1
Вот мой код:
from pygame import *
HEIGHT = 600
WIDTH = 400
COLORS = {
'red': (255, 0, 0),
'green': (0, 255, 0),
'blue': (0,0,255),
'white': (255, 255, 255),
'black': (0,0,0)
}
class Ball:
radius = 20
color = COLORS['red']
x = WIDTH//2
y = HEIGHT//2
speed_y = 1
time1 = 0
time2 = 0
g = 0.981
kF = 10 #N/m
kL = 0.5
m = 1 #kg
def draw(self):
screen.draw.filled_circle((self.x, self.y+300), self.radius, self.color)
def update(self):
self.time2 = time.get_ticks()
dt = (self.time2 - self.time1)/1000
self.time1 = self.time2
self.a = self.g - (self.kL / self.m) * self.speed_y - (self.kF / self.m) * self.y
self.speed_y = self.speed_y + self.a * dt
self.y += int(dt * self.speed_y)
ball1 = Ball()
def draw():
screen.clear()
ball1.draw()
def update():
ball1.update()