多面体/球面光线交点确定?

时间:2013-07-08 10:34:56

标签: c++ math 3d collision-detection computational-geometry

我正在寻找任何C ++库,它允许我获得一条线和一个多面体/球体之间的3D点碰撞(其中线由两个3D点和有限数量的3D点的多面体组成)

令我惊讶的是,我似乎找不到这样的图书馆(或者我不知道要搜索哪些词组)。

此外,我见过的大多数碰撞库都是从2005/2006年开始的(但没有人说如何获得生命点坐标,其中大部分是用于可视化事物和检查边界,或者是两个3d对象之间的碰撞等。太过分杀对我来说 - 我只想要一条线和一个3D物体之间的3D碰撞点[多面体/球体])

那么......截至2013年哪些图书馆是最新的,并利用新技术来实现最佳性能?

或者我的案例是否有代码示例?

我有时喜欢重新发明轮子,但在这种情况下,我不希望它用于游戏的插件 - 所以可靠和快速的东西是优先的。

2 个答案:

答案 0 :(得分:3)

什么是快速和有效的取决于有多少对象,等等。如果你只是要测试一些对象,那么构建八叉树或其他空间分区的意义不大。您可能会考虑尝试找到包围多面体的(边界)球体(原点+半径),并测试是否首先相交。或者是轴对齐的边界框(AABB)。

然后你可以进入更昂贵的多面体测试 - 这可能需要针对每个'前向'三角形进行测试。如果物体不是凸面的话就会出现问题,就像网格一样,在这种情况下你需要最小距离的光线。

请参阅:CGALGeometric Tools

答案 1 :(得分:1)