首页 > 解决方案 > 粒子从球形边界反弹 3D

问题描述

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

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

初始集

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

飞机

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

标签: algorithm3dbounceparticles

解决方案


扩展我的评论:

P为质点位置,V为质点速度,C为圆心。

然后:

  1. 计算切面法线:N = (CP)/|CP|
  2. 计算速度的法向分量:Vn = N·V
  3. 确保它指向内部: if (Vn < 0) then V+=2*Vn*N

您可以重新排列以摆脱平方根:

  1. N = CP
  2. Vn = N·V
  3. 如果 (Vn<0) 那么 V+=2*Vn*N/|N|²

推荐阅读