鱼C论坛

 找回密码
 立即注册
查看: 2044|回复: 6

有人能写出这个二体系统的稳定一些的解吗

[复制链接]
发表于 2023-3-4 17:30:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下
# -*- coding:utf-8 -*-
"""
@Author: 歌者文明清理员1410382
@Datetime: 2023-03-04 16:26:16
@Name: 双星系统.py
@OriginLink:
"""
from calc import *

a = obj(1, 0.5, vec(0.2, 0, 0), color.yellow, True, vec(0, 0, -10))
b = obj(1, 0.5, vec(-0.2, 0, 0), color.cyan, True, vec(0, 0, 10))
earth = obj(0.000000000000000000000000000000000001, 0.2, vec(0.2, 0.295, 0.01), color.blue, False, vec(0, 15, 0))
mainloop(1)
calc.py内容如下
# -*- coding:utf-8 -*-
"""
@Author: 歌者文明清理员1410382
@Datetime: 2023-03-04 16:21:03
@Name: calc.py
@OriginLink:
"""
from vpython import *


def obj(mass, radius, momentum, color, emissive, pos, lock=False):
    a = sphere(color=color, make_trail=True, retain=150, trail_width=radius / 10)
    a.mass = mass
    a.radius = radius
    a.momentum = momentum
    a.trail_color = color
    a.emissive = emissive
    a.pos = pos
    a.locked = lock
    if a.emissive:
        attach_light(a)
    stars.append(a)
    return a


def move(g=1):
    for sa in stars:
        sa.pos += sa.momentum * (not sa.locked)
        for sb in stars:
            if sa == sb:
                continue  # samestar
            distance = mag2(sa.pos-sb.pos)**1.5
            if distance < limit:
                distance = limit
            force = g * sa.mass / \
                distance * (sa.pos-sb.pos)
            sb.momentum += force


def mainloop(dt=1, g=1):
    scene.width, scene.height = 1900, 1050
    scene.range = 100

    while True:
        rate(dt * 100)
        move(g)


stars = []
limit = 0.001
每次都是甩出去,而且两个恒星慢慢的总是会相撞弹开
我知道弹开是因为,它们撞在一起时,距离的平方突然上升导致速度上升
准备工作
pip install vpython -i https://mirrors.aliyun.com/pypi/simple
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-4 18:44:40 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-3-4 18:46 编辑

只需要改参数就行了,10-12行第三个参数(速度)最后一个参数(初始位置)
因为模拟中的二体系统中的行星轨迹极不规律,到处乱飞,有三体星系那么难以生存
改一点点参数(0.001)整个轨迹就完全不一样了
obj(质量, 半径, 速度, 颜色, 是否发光, 位置[, 位置是否锁定])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-5 10:14:18 | 显示全部楼层
歌者文明清理员 发表于 2023-3-4 18:44
只需要改参数就行了,10-12行第三个参数(速度)最后一个参数(初始位置)
因为模拟中的二体系统中的行星 ...

这难道就是芝士的力量吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-5 10:17:18 | 显示全部楼层
wyhpylc 发表于 2023-3-5 10:14
这难道就是芝士的力量吗

你说哪个,公式我是从 glowscript 的例子上复制的(已做出太阳系,正在完善,有轨道倾角,离心率也有)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-5 10:27:33 | 显示全部楼层
歌者文明清理员 发表于 2023-3-5 10:17
你说哪个,公式我是从 glowscript 的例子上复制的(已做出太阳系,正在完善,有轨道倾角,离心率也有)

az,粘贴的也厉害啊,我甚至看不懂这个公式]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-5 10:31:31 | 显示全部楼层
wyhpylc 发表于 2023-3-5 10:27
az,粘贴的也厉害啊,我甚至看不懂这个公式]

我也看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-5 10:35:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 09:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表