歌者文明清理员 发表于 2023-3-4 17:30:28

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

代码如下
# -*- 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

歌者文明清理员 发表于 2023-3-4 18:44:40

本帖最后由 歌者文明清理员 于 2023-3-4 18:46 编辑

只需要改参数就行了,10-12行第三个参数(速度)最后一个参数(初始位置)
因为模拟中的二体系统中的行星轨迹极不规律,到处乱飞,有三体星系那么难以生存
改一点点参数(0.001)整个轨迹就完全不一样了

obj(质量, 半径, 速度, 颜色, 是否发光, 位置[, 位置是否锁定])

wyhpylc 发表于 2023-3-5 10:14:18

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

这难道就是芝士的力量吗{:10_257:}

歌者文明清理员 发表于 2023-3-5 10:17:18

wyhpylc 发表于 2023-3-5 10:14
这难道就是芝士的力量吗

你说哪个,公式我是从 glowscript 的例子上复制的(已做出太阳系,正在完善,有轨道倾角,离心率也有)

wyhpylc 发表于 2023-3-5 10:27:33

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

az,粘贴的也厉害啊,我甚至看不懂这个公式]

歌者文明清理员 发表于 2023-3-5 10:31:31

wyhpylc 发表于 2023-3-5 10:27
az,粘贴的也厉害啊,我甚至看不懂这个公式]

我也看不懂

wyhpylc 发表于 2023-3-5 10:35:00

歌者文明清理员 发表于 2023-3-5 10:31
我也看不懂

az
页: [1]
查看完整版本: 有人能写出这个二体系统的稳定一些的解吗