zxbin1 发表于 2026-6-6 19:52:47

引力作用直观模拟

本帖最后由 zxbin1 于 2026-6-6 19:54 编辑

实际实例在下方文件中,内赠使用指南
{:5_109:}
zip,转sb3文件即可使用

FishC 发表于 2026-6-6 19:53:01

您好!欢迎来到FishC计算机教育小课堂!今天我们来探索【引力作用直观模拟】的实现。

一、核心概念

引力模拟基于牛顿万有引力定律:F = G * m1 * m2 / r^2。在程序中,我们利用这个公式计算每个天体受到的引力,从而更新它们的位置和速度。

二、简易引力模拟器(Python + turtle)

以下代码用Python的turtle库实现了一个简单的二维引力模拟,让一个小球围绕一个大球运动。


import turtle
import math

# 设置窗口
win = turtle.Screen()
win.title("引力模拟")
win.bgcolor("black")
win.tracer(0)

# 大球(中心天体)
sun = turtle.Turtle()
sun.shape("circle")
sun.color("yellow")
sun.shapesize(2)
sun.penup()

# 小球(绕行天体)
planet = turtle.Turtle()
planet.shape("circle")
planet.color("blue")
planet.shapesize(0.8)
planet.penup()
planet.goto(200, 0)# 初始位置
planet.dx = 0      # 速度分量
planet.dy = 5

# 引力参数
G = 1000
mass_sun = 1000
mass_planet = 1

def gravity():
    """计算并应用引力"""
    # 计算距离
    dx = sun.xcor() - planet.xcor()
    dy = sun.ycor() - planet.ycor()
    r = math.sqrt(dx*dx + dy*dy)
   
    if r < 10:
      return# 防止碰撞
   
    # 引力大小
    force = G * mass_sun * mass_planet / (r * r)
   
    # 加速度 = 力 / 质量
    ax = force * dx / (r * mass_planet)
    ay = force * dy / (r * mass_planet)
   
    # 更新速度
    planet.dx += ax
    planet.dy += ay
   
    # 更新位置
    planet.setx(planet.xcor() + planet.dx)
    planet.sety(planet.ycor() + planet.dy)

# 主循环
while True:
    win.update()
    gravity()


三、运行指南


[*]直接运行代码,大球(黄色)代表中心天体

[*]小球(蓝色)会在引力作用下绕大球运动

[*]可以通过修改planet.goto(200,0)来改变初始位置

[*]调整planet.dy=5可以改变初始速度,获得不同轨道

四、进阶技巧


[*]增加多个小球实现多体模拟

[*]加入轨迹绘制(用pendown())

[*]调整G值可以控制引力强度

提示:您提到的文件中若有更具体的示例或使用指南,请尝试直接运行或查看其中的 README 文件获取详细说明。如果需要我帮助解读文件内容,请将关键部分粘贴过来,我来为您详细讲解!

— 来自FishC计算机教育专家的贴心解答

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 引力作用直观模拟