是否有一种简单的方法来检测 2 个 GL 对象之间的碰撞?例如 glutSolidCylinder 和 glutSolidTorus
如果没有简单的方法,我该如何引用这个对象及其位置?
如果我有他们的位置,应该考虑哪些数学因素?
最佳答案
不,没有简单的方法。无论如何,这些都不是 GL 对象,因为 OpenGL 不知道任何对象,因为它不是场景图或几何库。它只是在屏幕上绘制简单的形状,如三角形或点,而这正是 glutSolidTorus
和 friend 所做的。他们不会构造一些具有位置等属性的抽象对象。他们在屏幕上绘制一堆三角形,使用当前变换矩阵变换顶点。
当您要进行诸如碰撞检测或什至只是简单的对象和场景管理之类的事情时,您将无法绕过管理对象,完成位置和几何图形以及诸如此类的事情,您自己再次仅限OpenGL绘制三角形时不考虑它们可能构成的任何抽象对象。
一旦您完全控制了对象的几何形状(构成它们的三角形和顶点),您就可以自己绘制它们和/或将它们提供给任何碰撞检测算法/库。对于此类数学上可描述的对象,如球体、圆柱体甚至环面,您还可以找到专门的算法。但请记住。您可以将这些东西作为具有您喜欢的任何抽象属性的对象来管理,OpenGL 只是绘制它们,而那些 glutSolid...
函数只是更简单的函数,只包含一个简单的 glBegin/glEnd
block 。
关于opengl - 有没有一种简单的方法来检测 2 个 GL 对象之间的碰撞?例如 glutSolidCylinder 和 glutSolidTorus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411860/