边界检测

时间:2013-05-30 08:22:32

标签: c++ opengl graphics collision-detection boundary

我正在开发OpenGL 2.0项目。我从文件加载对象,该文件包含有关对象名称,位置,比例和旋转的信息。

我在代码中获得了所有这些信息,现在我想计算所有加载对象的边界,这样我就可以开始冲突了。

项目是比例值,如0.1,即它与维度向量相乘得到实际的边界维度。

例如,对象1:比例x:-0.1,y:0.05,z:0.1     对象2:比例x:0.1,y:0.1,z:0.1

对象1:pos x:5,y:21.7269,z:0    对象2:pos x -58.0646 y:-6.68359,z:0

对象1:rot x:0,y:0,z:0    对象2:rot x:0,y:90,z:0

我的问题是,我想计算尺寸,即每个对象的边界,如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

取决于“边界”的含义。如果你的意思是AABB(轴对齐的边界框),对于每个单独的对象,它只是一个问题

  1. 找到所有顶点
  2. 将组件乘以比例
  3. 使用旋转进行变换(使用旋转矩阵或标准三角法)
  4. 找到轴上的极端情况
  5. 按位置向量翻译
  6. 其中许多可以按不同的顺序完成。

    你可能最好从一些好的理论开始。 Real Time Collision Detection是非常不言自明的,并且一直是我最喜欢的关于这个主题的书籍之一,也是任何有兴趣的人开始的好地方。

    从低维物理开始也是一个好主意,直​​到概念更加牢固(即不使用z维度)。