开发者

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 开发者_Python百科circle?


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


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜