MrB*_*Sky 2 opengl collision-detection
有没有一种简单的方法来检测2个GL对象之间的碰撞?例如glutSolidCylinder&glutSolidTorus
如果没有简单的方法,我如何将这些对象引用到它们的位置?
如果我有他们的位置,应考虑的数学考虑因素是什么?
不,没有简单的方法.这些不是GL对象,因为OpenGL不知道任何对象,因为它不是场景图或几何库.它只是在屏幕上绘制简单的形状,如三角形或点,这正是glutSolidTorus朋友所做的.它们不构造具有诸如位置等属性的一些抽象对象.他们在屏幕上绘制一堆三角形,使用当前的变换矩阵变换顶点.
当您即将进行碰撞检测甚至只是简单的对象和场景管理之类的事情时,您将无法绕过管理对象,完成位置和几何以及诸如此类的事情,因为OpenGL只绘制三角形而没有概念他们可能构成的任何抽象对象.
一旦完全控制了对象几何体(由它们组成的三角形和顶点),您就可以自己绘制它们和/或将它们提供给任何碰撞检测算法/库.对于这样的数学上可描述的对象,如球体,圆柱体,甚至是圆环体,您也可以找到专门的算法.但请记住.您可以将这些事物作为具有您喜欢的任何抽象属性的对象来管理,OpenGL只是绘制它们,而这些glutSolid...函数只是包含除了简单glBegin/glEnd块之外的其他函数.