首页 > 解决方案 > 给定 2 个点和 2 个方向,我怎么知道它们是否相交?

问题描述

我在 C# 中做一些碰撞测试,我有以下问题。

我有object1和object2,它们朝一个方向移动。

仅当 object1 和 object2 以特定角度碰撞时,我才想激活效果

我拥有的数据

Vector2 object1Position
Vector2 object1Direction
float object1ColliderRadius

Vector2 object2Position
Vector2 object2Direction
float object2ColliderRadius

我已经进行了测试以了解 object1 是否与 object2 发生碰撞。

我想念的是碰撞角度,以便在我的代码中激活或不激活其他东西。按照这张图片。 在此处输入图像描述

标签: c#mathvector

解决方案


角度很容易从例如点积中计算出来。更有趣的问题是,如果两者完全碰撞。当然,这取决于速度。通过添加一个额外的维度很容易处理它。在这里你会放z = t. 使用 3D 仿射几何,您可以检查 3D 线是否相交。如果是,则具有 2D 轨迹的对象发生碰撞。这当然是针对点对象的,因此您必须详细检查线条的最近距离。


推荐阅读