土星环的简单模型

计算科学 计算物理学
2021-12-26 23:31:19

我试图弄清楚如何使用粒子系统为我正在制作的重力模拟器模拟土星环。使用下面的代码,我已经成功地创建了一个在土星及其卫星的引力作用下围绕土星旋转的圆环,如果不是完美的话。然而,我的环的轴向倾斜度为 0,而实际上土星环的轴向倾斜度为 27 度。问题是我无法为构成粒子系统的粒子获得正确的 z 位置和速度矢量。有人能帮我弄清楚如何做到这一点吗?我用来为环中的每个粒子生成初始状态向量的代码可以在下面找到。

for (let i = 0; i < this.numberOfParticles; i++) {

  const rad = Math.PI * 2 * Math.random();
  const dist = (25 + 20 * Math.random()) / 32000;

  this.particles.push({
    x: Math.cos(rad) * dist,
    y: Math.sin(rad) * dist,
    z: 0,
    vx: (Math.cos(rad + Math.PI / 2 + (Math.PI / 180 * 6 - Math.PI / 180 * 12) * 0) * Math.sqrt(500 / dist)) / 120,
    vy: (Math.sin(rad + Math.PI / 2 + (Math.PI / 180 * 6 - Math.PI / 180 * 12) * 0) * Math.sqrt(500 / dist)) / 120,
    vz: 0
 });

}
1个回答

使其工作的几个方向和注意事项:

  • 现在,您在 XY 平面上具有正常的点和向量。n^xy=(0,0,1)
  • 您可以简单地相应地旋转您的点和向量(在 XY 平面中创建),而不是最初在倾斜平面中构建点和向量
  • 为此,您必须找到倾斜平面的法线:,您可以使用基本几何和找到它。n^θθ=27
  • 由于您还需要一个旋转点,您可能会注意到,对于原始平面和倾斜平面,原点保持在原点。O=(0,0,0)

在弄清楚这一点之后,您将有足够的信息来从带有的平面正确旋转到带有的平面。n^xyn^θ