使用三角法旋转物体后,是否可以重新计算轴对齐的边界框?

时间:2016-01-05 19:02:39

标签: math 3d glm-math

我的轴对齐边界框表示为2个3D矢量,一个保持左下 - 后点(最小),一个保持右上 - 前点(最大)。

在向任何方向旋转物体后,必须重新计算包围它的aabb以使其适合。以此图片为例:

Pretsel

这可以使用我拥有的两个起点和旋转的角度+方向来计算吗?如果是这样的话?什么是最有效的方式?

P.S。我使用glm作为我的数学,所以任何使用glm做到这一点的方法都非常有用!

2 个答案:

答案 0 :(得分:4)

您可以通过现有AABB的轮换计算新的AABB吗?是。它涉及转换所有8个点,然后从中计算AABB。您可以找到每个维度的最大范围,即每个维度的最大/最小值。

但是,这不会给你显示的图片效果。原因很明显。图片是从它所包含的实际网格的旋转重新计算AABB。而你想要通过旋转矩形重新计算它。

基于盒子的重新计算将始终大于严格必要的重新计算。从实际网格中重新计算AABB将产生更紧密的AABB。

答案 1 :(得分:3)

要使用视觉证据备份Nicol Bolas的答案,如果您对该对象的所有了解都是其未旋转的边界框的大小,则无法在旋转后找到对象的最小AABB。考虑具有相同AABB的两个对象的情况:

enter image description here

快乐圆圈的边界框与悲伤的矩形相同。现在,将它们旋转45度。他们的新边界框是否相同?

enter image description here

不 - 悲伤的矩形边框有点宽,而且短得多,而快乐圆的盒子根本没有变化!因此,只知道边界框角落的坐标不足以找到它的旋转对应物。