3D 四边形的角度 space
Angles of quad in 3D space
我正在研究射弹的物理模拟,但我卡在了地面碰撞上。我有一个由四边形组成的地面,
我将这些点存储在一个数组中,所以我想如果我在发生碰撞的地方取四边形并计算四边形的角度(在 x 和 z 方向),然后我可以用它来改变速度弹丸的。
这就是我卡住的地方。我想我应该找到最低点和最高点,然后找到它们之间的向量,但这不会给出所有方向的角度,这正是我想要的。我知道肯定有办法做到这一点,但是怎么做呢?
你想要的是四边形的法线。
Here's an answer that shows you how to get a quad's normal
得到法线后,需要计算collision's response. Its direction is the normal of the quad and the strength is the strength the projectile exerts in the direction of the quad. Exerted force is calculated by using dot product of the projectile's velocity and reversed quad's normal (Here's a wiki link for the dot product)
的力
响应向量应该是这样的:
Vector3 responseForce = dot(projectile.vel, -1 * quad.normal) * quad.normal;
projectile.vel += responseForce;
我正在研究射弹的物理模拟,但我卡在了地面碰撞上。我有一个由四边形组成的地面,
我将这些点存储在一个数组中,所以我想如果我在发生碰撞的地方取四边形并计算四边形的角度(在 x 和 z 方向),然后我可以用它来改变速度弹丸的。
这就是我卡住的地方。我想我应该找到最低点和最高点,然后找到它们之间的向量,但这不会给出所有方向的角度,这正是我想要的。我知道肯定有办法做到这一点,但是怎么做呢?
你想要的是四边形的法线。
Here's an answer that shows you how to get a quad's normal
得到法线后,需要计算collision's response. Its direction is the normal of the quad and the strength is the strength the projectile exerts in the direction of the quad. Exerted force is calculated by using dot product of the projectile's velocity and reversed quad's normal (Here's a wiki link for the dot product)
的力响应向量应该是这样的:
Vector3 responseForce = dot(projectile.vel, -1 * quad.normal) * quad.normal;
projectile.vel += responseForce;