3D空间中四边形的角度

问题描述 投票:0回答:1

我正在对射弹进行物理模拟,并且陷入了地面碰撞。我的地面是四边形,

enter image description here

我将点存储在数组中,所以我认为,如果我将发生碰撞的四边形并计算四边形的角度(在x和z方向上),则可以使用它来改变弹丸的速度。

这是我被困住的地方。我以为我应该找到最低和最高点,然后找到它们之间的向量,但这并不能给出所有方向的角度,这正是我想要的。我知道一定有这样做的方法,但是如何?

c++ 3d angle plane
1个回答
1
投票

您想要的是四边形的法线。

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;
© www.soinside.com 2019 - 2024. All rights reserved.