3D空间中四角的角

3D空间中四角的角

问题描述:

我正在研究弹丸的物理模拟,并且我被困在地面碰撞上。我有一个四边形的地面,like this3D空间中四角的角

我有点存储在一个数组中,所以我认为,如果我把碰撞发生的四边形和计算四边形的角度(在x和z方向)I然后可以使用它来改变抛射体的速度。

这是我卡住的地方。我想我应该找到最低点和最高点,然后找到它们之间的矢量,但是这不会给出所有方向上的角度,这正是我想要的。我知道一定有办法做到这一点,但是怎么做?

你想要的是四元组的法线。

Here's an answer that shows you how to get a quad's normal

后你有正常的,你需要计算collision's response的力量。它的方向是四边形的法线,强度是射弹沿四边形方向施加的力量。施加的力是通过使用射弹的速度的点积计算,并逆转四的正常(Here's a wiki link for the dot product

响应载体应是这样的:

Vector3 responseForce = dot(projectile.vel, -1 * quad.normal) * quad.normal; 
projectile.vel += responseForce;