我正在使用 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(轴对齐边界框),对于每个单独的对象,这只是一个问题
- 找到你所有的顶点
- 将组件乘以比例
- 使用旋转进行变换(使用旋转矩阵或标准三角函数)
- 找到坐标轴的极值
- 通过位置 vector 翻译
其中许多可以按不同的顺序完成。
您最好从一些好的理论开始。 Real Time Collision Detection非常不言自明,一直是我最喜欢的主题书籍之一,也是任何有兴趣的人入门的好地方。
从低维物理学开始也是一个好主意,直到概念更加 Root (即不使用 z 维度)。
关于c++ - 边界检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831228/