我有两个六面体。唯一的保证是他们每个人都有8个垂直3f(垂直x,y和z分量)有了这个,我怎么知道它们是不是相撞了?
最佳答案
看来我太笨了,不能放弃。
想想这个如果实体1的任何边与实体2的任何面相交,则会发生碰撞。这不太全面,因为当一个完全包含在另一个中时,可以通过确定其中一个的中心是否包含在另一个中来测试。
检查边面相交的工作方式如下。
将边定义为从一个顶点到另一个顶点的向量注意边缘的长度L
。
通过顶点、法线、平面内基和该基中剩余顶点的位置定义平面段。
Find the intersection of the line and the plane。在通常的公式中,您将能够得到沿直线的长度,以及在您选择的基础上交叉点的平面内坐标。
交叉点的长度必须小于cc>,并且必须位于平面中的图形内最后一部分有点难,但是有a well known general solution。
这会奏效的。为了口才,我更喜欢R..'s solution如果你需要速度…好吧,你只需要试试看。
关于c++ - 两个普通六面体之间的碰撞检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3648285/