Reputation:
How can i make a smooth circular orbit at a constant speed using pygame? How would i calculate x, y on a circle?
Upvotes: 1
Views: 1086
Reputation:
Rotating about the 2d point center
with the given radius and speed.
The parameter t
is the time in units of seconds.
def circular_orbit(center, radius, speed, t):
theta = math.fmod(t * speed, math.PI * 2)
c = math.cos(theta)
s = math.sin(theta)
return center[0] + radius * c, center[1] + radius * s
Upvotes: 4
Reputation: 40904
Try using polar coordinates. It's natural :)
If you don't calculate enough frames to make your orbit look smooth, calculate 3-4 intermediate points of orbit to draw shorter line segments, without calculating the game state at these points. Make this radius-dependent. This helps proper collision detection, too.
Upvotes: 1