user499480
user499480

Reputation:

Making smooth orbits in pygame

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

Answers (2)

user97370
user97370

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

9000
9000

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

Related Questions