粒子从球形边界3D反弹

时间:2018-07-12 16:46:09

标签: algorithm 3d bounce particles

这很奇怪,但是我找不到任何清晰的算法来反弹3D空间中的球面边界。

例如,我有一个在空心球内具有任意速度的粒子。这个粒子没有任何形状/物体,只有一个点坐标。

initial set

当粒子撞击边缘时(与球体原点的距离大于球体半径),必须找到一个平面,然后从该平面计算反射角。

plane

但是,也许还有另一种方法?

1 个答案:

答案 0 :(得分:2)

扩大我的评论:

P 为粒子位置, V 为粒子速度,并以 C 为圆心。

然后:

  1. 计算切线法线: N =(C-P)/ | C-P |
  2. 计算速度的正态分量: Vn = N·V
  3. 确保其向内指向:如果(Vn <0),则V + = 2 * Vn * N

您可以重新排列以消除平方根:

  1. N = C-P
  2. Vn = N·V
  3. 如果(Vn <0),则V + = 2 * Vn * N / | N |²