当前位置: 首页 > 知识库问答 >
问题:

球面碰撞解决方案

何涵忍
2023-03-14

我想写一个C++程序来计算球体和平面之间的碰撞。

规则是下落物体的角度等于反射角度。

我对Sphere有什么看法:

//sphere coordinates and radius
float x;
float y;
float z;
float r;
//sphere velocity vector projections
float vx;
float vy;
float vz;

平面用平面方程系数来描述:

float A;
float B;
float C;
float D;

对于球面碰撞检测,我没有问题。但碰撞后如何求速度?

我发现了什么:

因此,最终我需要计算vx vy vz的更新值。

共有1个答案

郎聪
2023-03-14

定义平面的方程是

Ax + By + Cz + D = 0

所以垂直于平面的矢量是

W = (A, B, C)

使其正常化:

n = W/|W|
V = (vx, vy, vz)
Vn = (V . n) n
Vp = V - Vn

我们希望反转正常的分量,并保持平行的分量不变:

V' = -Vn + Vp

其结果是

V' = V - 2(V . n)n
 类似资料:
  • 我正在编写软件,扩展圆-矩形碰撞检测(交集),以包括对碰撞的响应。圆边和圆矩形是相当直接的。但一圈又一圈地把我难住了。 例如,在离散事件模拟中,让两个圆碰撞,一个红一个绿。我们可能会出现以下情况: 在它们碰撞后,我们可以立即: 这里的RIP和GIP是在前一个时钟滴答的圆圈的位置。在当前时钟滴答时,在RDP和GDP处检测到冲突。然而,当两个圆位于RCP和GCP时,碰撞发生在时钟滴答之间。在时钟滴答声

  • 这两个球在画布上弹来弹去。 如果球碰撞了,帆布应该说游戏结束。 这是一个代码,我已经为碰撞到目前为止

  • The Sphere Collider is a basic sphere-shaped collision primitive. 球体碰撞器是一个基本的球体形状的原型碰撞器。 A pile of Sphere Colliders 一堆球体碰撞器 Properties 属性 Material 材质 Reference to the Physic Material that determines h

  • 我目前正在尝试使用java和libgdx制作一个突破性的克隆。我现在很难让球以合适的角度从挡块上弹起。简而言之,我遇到的问题是,球每帧移动12个像素,并不总是与砖的边缘对齐。如果有人对更好的移动球的方法或其他检查碰撞的方法有任何建议,我们将不胜感激! 主要游戏类 Ball类 砖块代码以防万一

  • 我正在创建一个突破游戏来熟悉Java。目前我已经把一切都做好了,但我注意到球似乎是朝着同一个方向飞的。 我已经对它进行了编程,当球碰到球拍时,Y速度是相反的。这是可行的,但球似乎遵循相同的路线。。。 如何让碰撞看起来更真实? 当球击中桨的左侧时,我想将其重新定向到左侧,但我不确定在哪个角度反射它。有人能提供一个公式来帮助我计算出当球接触桨的左侧或右侧时需要引导的角度吗?

  • 本文向大家介绍java实现小球碰撞功能,包括了java实现小球碰撞功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现小球碰撞的具体代码,供大家参考,具体内容如下 这次我们做一个小球的碰撞的游戏,规则是:按下添加按钮,窗口的中心部分会产生一个小球(刚开始默认为黑色),四个方向随机产生,发射小球,再次按下即产生两个小球。当小球碰到窗体边缘的时候会产生反弹,当两个小球接触时会