如何模拟粒子从 3D 曲面弹回?

How to model particle bouncing off of a curved surface in 3D?

我正在尝试模拟一个粒子从圆柱体(内部)或任何封闭的 3 维曲面的侧面反弹。

在与表面相互作用的那一刻,我有位置矢量、速度矢量和交点处与表面相切的平面,我正在寻找新的速度矢量。

目前正在 Python 中编码,但 pseudocode/general 算法也将非常有帮助。

获取飞机的normal vector。 (为此,您可以在平面中的两个非平行向量之间进行叉积)。

取速度向量 components relative to the normal vector 和:

  • 使平行分量为负
  • 保持垂直分量不变。

采用类似于@jacdeh 的方法:

  • 标准化法向量
  • velocityunit normal进行内积(即相对于表面的标量速度)
  • 将内积乘以unit normal(也就是我说的平行分量)。
  • velocity 中减去该分量的 2 倍,这就是结果。
  1. 将法向量计算为两个切向量与曲面的叉积

  2. 将其归一化以获得正常的单位

  3. 计算负速度与法向量的内积(点积)

  4. 将内积与单位法线相乘得到法线投影

  5. 从负速度减去法线上的投影

  6. 将其添加到投影以获得新的速度矢量