塑造一个胶囊对抗凸多面体

时间:2011-08-21 04:52:35

标签: algorithm math vector geometry collision-detection

假设我有一个直立的胶囊形状(扫过的球体),我想沿着速度矢量投射它。我希望能够找到 接触点 曲面法线 以获得任何凸形状沿着这条路径相交。我还想找到扫掠的传送带到第一次接触点的距离。

下面是一个快速绘制的胶囊图,其中包含一个大凸多面体(仅绘制一个面)enter image description here

哪种算法或流程可以做到这一点?我认为它类似于球体投射,但我也找不到太多。

2 个答案:

答案 0 :(得分:1)

由于你正在考虑胶囊和凸多面体,我想你可以使用基于GJK的东西。在碰撞过程中,您将获得接触点和曲面法线,如果没有碰撞,您将获得物体与相关见证点之间的最小距离。

您还可以在Interactive and Continuous Collision Detection for Avatars in Virtual Environments上查看此出版物。

答案 1 :(得分:-1)

如果它与你的图表相同,那么找到它碰撞的位置就很容易了。获取圆x和y坐标,加上'+'圆的半径。如果该点位于路径的线上,那么它就是碰撞。必须使用线方程式找到该线y = mx + c。

可以通过设置x和y的初始值来计算距离。然后当对象命中时将最终变量设置为x和y。然后只是一个线公式的长度来计算行进的距离。

问题在于我正在从C ++中学到什么,我不知道你的编程是什么。

我认为你想要别的东西但是无法解决段落中的问题。