You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Pygame的太阳系模拟:生成固定轨道半径的随机行星位置

固定轨道半径上随机生成行星位置的实现方案

要在太阳周围固定半径的轨道上随机放置行星,核心是利用极坐标转直角坐标的数学原理:通过随机生成轨道角度,结合固定半径计算出对应的平面坐标。以下是适配Pygame的具体实现步骤和代码:

核心逻辑

固定轨道半径r,随机生成0到2π(对应360度)之间的弧度角度θ,然后通过三角函数计算行星相对于太阳的位置:

  • 行星X坐标 = 太阳X坐标 + r × cos(θ)
  • 行星Y坐标 = 太阳Y坐标 + r × sin(θ)

代码示例

import math
import random
import pygame

# 初始化Pygame
pygame.init()
screen_size = (800, 600)
screen = pygame.display.set_mode(screen_size)

# 太阳位置(以屏幕中心为例)
sun_pos = (screen_size[0] // 2, screen_size[1] // 2)
# 预设固定轨道半径
orbit_radius = 200

# 生成随机轨道角度(弧度范围0到2π)
random_angle = random.uniform(0, 2 * math.pi)
# 计算行星坐标
planet_x = sun_pos[0] + orbit_radius * math.cos(random_angle)
planet_y = sun_pos[1] + orbit_radius * math.sin(random_angle)
# 转换为整数(Pygame绘制坐标需为整数)
planet_pos = (int(planet_x), int(planet_y))

# 示例绘制:太阳和行星
pygame.draw.circle(screen, (255, 204, 0), sun_pos, 30)
pygame.draw.circle(screen, (100, 150, 255), planet_pos, 15)

pygame.display.flip()

# 主循环(基础事件处理)
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
pygame.quit()

补充说明

  • 用弧度而非角度:Pythonmath模块的三角函数默认接收弧度参数,无需额外转换,计算更高效。
  • 多行星生成:如果要生成多个轨道行星,只需循环执行角度生成和坐标计算步骤,随机角度会自动保证行星在轨道上均匀分散。
  • 坐标适配:如果太阳不在屏幕中心,直接替换sun_pos为目标坐标即可。

内容的提问来源于stack exchange,提问作者Arush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:13:16