c++ - 边界检测

标签 c++ opengl graphics collision-detection boundary

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

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

项目的比例值类似于 0.1,即它与维度 vector 相乘以获得实际边界维度。

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

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

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

我的问题是,我想计算每个物体的尺寸,即边界,如何才能达到这个目标?

最佳答案

取决于你所说的“边界”是什么意思。如果您指的是 AABB(轴对齐边界框),对于每个单独的对象,这只是一个问题

  1. 找到你所有的顶点
  2. 将组件乘以比例
  3. 使用旋转进行变换(使用旋转矩阵或标准三角函数)
  4. 找到坐标轴的极值
  5. 通过位置 vector 翻译

其中许多可以按不同的顺序完成。

您最好从一些好的理论开始。 Real Time Collision Detection非常不言自明,一直是我最喜欢的主题书籍之一,也是任何有兴趣的人入门的好地方。

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

关于c++ - 边界检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831228/

相关文章:

graphics - 在 Mathematica 中使用 Locator 和 Manipulate 设置步长

c++ - 如何找到我的进程在 Linux 中打开的文件句柄?

c++ - 如何在 C++ 中的两个类之间定义(重载)对称二元运算符,同时考虑 r 值?

c++ - 是否有任何计划或现有项目将 OpenGL API 移植到 C++?

OpenGL 本地渲染并通过 SSH 查看

c++ - 我应该向 glTexSubImage2D 提供完整图像还是部分图像?

c# - 寻找最佳线环绕宽度以最大化垂直相同值邻居的数量

Android -- 如何允许水平和垂直滚动

java - JNAerator - 使用由 typedef 生成的接口(interface)

C++ 递归和指针问题