#procedural-generation #system #generation #planetary #procedural #npm-package

accrete

Rust 版的 Accrete,行星系统生成算法。基于 Stephen H. Dole 的《通过聚集形成行星系统:计算机模拟》。在过去 50 年中,许多有才华的人对其进行了改进和扩展。

14 个版本

0.2.0 2022 年 6 月 1 日
0.1.7 2021 年 11 月 25 日
0.1.6 2021 年 10 月 26 日
0.1.4 2020 年 10 月 6 日
0.0.2 2020 年 8 月 31 日

科学 类别中排名 161

MIT 许可证

430KB
2.5K SLoC

Accrete.rs

License: MIT Build Status Doc Crate npm version

Rust 版的 Accrete,行星系统生成算法。基于 Stephen H. Dole 的《通过聚集形成行星系统:计算机模拟》。在过去 50 年中,许多有才华的人对其进行了改进和扩展(这里有一个很好的概述,下面还有简短的历史介绍)。这个版本的 Accrete 可以用于生成可能的行星系统。

特性

  • 从原始 Accrete 生成行星系统。
  • 从 Starform / Stargen 生成星球环境。
  • 生成卫星和环。
  • 扩展的恒星和行星数据。
  • 独立生成星球。
  • Rust crate
  • NPM 包

生成行星系统

Rust

use accrete;

fn main() {
    let u64_seed = 123;
    let mut accrete = Accrete::new(u64_seed);
    // To modify accrete configuration just change public field:
    // accrete.stellar_mass = 1.5;
    accrete.planetary_system();
}

JavaScript

import init, { planetary_system } from 'accrete-wasm';
async function run() {
    await init();
    const seed = 1;
    const stellar_mass = 1;
    const output = planetary_system(BigInt(seed), stellar_mass);
}
run();

简单的输出变化方法是改变恒星质量。这个 Accrete 实现能够生成任何恒星质量的行星系统,但对于主要序列恒星类(主星质量为 0.6 - 1.3 个太阳质量)的更好(最真实)结果。近似恒星质量

光谱类型 W O B A F G K M
恒星质量 40 30 10 3 1.5 1 0.7 0.4

配置

stellar_mass - 主星质量,以太阳质量为单位。 默认:0.6-1.3 之间的随机 f64(对应 F-G-K 主序列光谱类型)

dust_density_coeff - Dole 论文中的 "A",根据 Dole 论文的推荐范围是 0.00125-0.0015,还指出通过增加云中尘埃密度的系数可以产生双星(Stephen H. Dole 的《通过聚集形成行星系统:计算机模拟》)。 默认:0.0015

k - 尘埃与气体的比率 50-100(尘埃/气体 = K),气体 = 氢和氦,尘埃 = 其他。推荐范围:50.0-100.0 默认:50.0

cloud_eccentricity - 初始尘埃云的云_eccentricity。推荐范围:0.15-0.25。 默认:0.20

b - 使用 crit_mass_coeff 作为行星成为气态巨行星的阈值。推荐范围:1.0e-5 - 1.2e-5 默认:1.2e-5

post_accretion_intensity - 在聚集后向创建的星系行星投放的随机行星体的数量。 默认:1000

生成行星

Rust

use accrete;

fn main() {
    let u64_seed = 123;
    let mut accrete = Accrete::new(u64_seed);
    // To modify accrete configuration just change public field:
    // accrete.planet_mass = 2.5;
    accrete.planet();
}

JavaScript

import init, { planet } from 'accrete-wasm';
async function run() {
    await init();
    const seed = 1;
    const stellar_mass = 1;
    const output = planet(BigInt(seed), stellar_mass);
}
run();

配置

stellar_luminosity - 主星的光度。 默认:1.0

stellar_mass - 主星质量,以太阳质量为单位。 默认:1.0

a - 行星轨道半径(天文单位)。默认值:0.3-50.0范围内的随机f64

e - 行星偏心率。默认值:来自random_eccentricity函数的f64

mass - 行星质量(地球质量)。默认值:3.3467202125167E-10 - 500.0范围内的随机f64

post_accretion_intensity - 吸积后撞击行星的随机行星体数量。默认值:100

查看完整示例

简史

Accrete的起源可以追溯到20世纪60年代末,当时Stephen H. Dole发表了《通过聚集形成行星系统:计算机模拟》。大约十年后,Carl Sagan和Richard Isaacson改进了Dole的模型——不久之后,该模型也被实现了FORTRAN,并在Martin Fogg的论文《系外行星系统》中详细和学术性地发表。到了80年代末期,Matt Burdick将这个无价的程序带给大众(通过Turbo Pascal和C)。从那时起,Accrete的许多版本在互联网上出现,增加了不同程度的行星细节——最著名(最巧妙)的是Jim Burrow的StarGen实现。(c)

论文

致谢

依赖关系

~2–3.5MB
~58K SLoC