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

Math 使用三角学旋转对象后,是否可以重新计算轴对齐的边界框?,math,3d,glm-math,Math,3d,Glm Math,我的轴对齐边界框表示为2个三维向量,一个保持左下后点(最小值),一个保持右上前点(最大值) 在向任何方向旋转对象后,必须重新计算包含该对象的aabb,以适合。以这张图片为例: 可以使用我的两个起点和旋转的角度+方向来计算吗?如果是,怎么做?最有效的方法是什么 另外,我的数学使用glm,所以任何使用glm的现成方法都非常有用 你能从现有AABB的旋转计算出新的AABB吗?对它包括转换所有8个点,然后从中计算AABB。可以找到每个标注的最大范围,以及8个点的3个组件中的最大/最小值 然而,这并不能

我的轴对齐边界框表示为2个三维向量,一个保持左下后点(最小值),一个保持右上前点(最大值)

在向任何方向旋转对象后,必须重新计算包含该对象的aabb,以适合。以这张图片为例:

可以使用我的两个起点和旋转的角度+方向来计算吗?如果是,怎么做?最有效的方法是什么


另外,我的数学使用glm,所以任何使用glm的现成方法都非常有用

你能从现有AABB的旋转计算出新的AABB吗?对它包括转换所有8个点,然后从中计算AABB。可以找到每个标注的最大范围,以及8个点的3个组件中的最大/最小值

然而,这并不能给你展示的图片带来效果。原因很明显。图片正在根据其所包含的实际网格的旋转重新计算AABB。而您希望通过旋转矩形来重新计算它


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

您能否从现有AABB的旋转计算新的AABB?对它包括转换所有8个点,然后从中计算AABB。可以找到每个标注的最大范围,以及8个点的3个组件中的最大/最小值

然而,这并不能给你展示的图片带来效果。原因很明显。图片正在根据其所包含的实际网格的旋转重新计算AABB。而您希望通过旋转矩形来重新计算它


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

要用视觉证明来支持Nicol Bolas的回答,如果您只知道对象的未旋转边界框的大小,则无法找到旋转后对象的最小AABB。考虑两个具有相同AABBS的对象:

快乐圈的边框与悲伤矩形的边框相同。现在,将两者旋转45度。它们的新边界框相同吗


不-悲伤矩形的边框宽了一点,短了很多,而快乐圈的边框一点也没有改变!因此,仅仅知道边界框角点的坐标不足以找到旋转后的对应对象。

要用视觉证明来支持Nicol Bolas的回答,如果您只知道对象的未旋转边界框的大小,则无法找到旋转后对象的最小AABB。考虑两个具有相同AABBS的对象:

快乐圈的边框与悲伤矩形的边框相同。现在,将两者旋转45度。它们的新边界框相同吗


不-悲伤矩形的边框宽了一点,短了很多,而快乐圈的边框一点也没有改变!因此,仅仅知道边界框角点的坐标不足以找到旋转的对应点。

所以在现实世界中,这就是使用的方法?他们从头开始重新计算AABBs?@艺术家:取决于应用程序和对象的性质。。。对对于建模工具,这是完全合适的。对于需要更多实时工作的工具,可能不需要。根据模型的复杂性,可能值得预先计算其,并使用它来计算和重新计算AABB。船体的顶点可能比实际模型少很多,因此查找最大/最小x/y/z坐标所需的时间更少。因此,在现实世界中,这就是使用的方法?他们从头开始重新计算AABBs?@艺术家:取决于应用程序和对象的性质。。。对对于建模工具,这是完全合适的。对于需要更多实时工作的工具,可能不需要。根据模型的复杂性,可能值得预先计算其,并使用它来计算和重新计算AABB。外壳的顶点可能比实际模型少很多,因此查找最大/最小x/y/z坐标所需的时间更少。