如果轴对齐的边界框轴必须与世界轴对齐,那么它们的数学可能不适用于旋转的框,因此它们不与世界轴对齐?
我如何克服这个问题?
编辑: this论文说:
每个模拟对象都表示为与轴对齐的边界框 世界,因此每个碰撞对象都有一个位置,以及高度,宽度和长度。 依次考虑轴,如果所有三个轴都有重叠,那么就是交叉点 已经发生了。
我是否抓住了这个错误?
答案 0 :(得分:0)
您可以使用与任何坐标系对齐的边界框。只要它们都与同一系统对齐,您就可以使用AABB方法。
计算边界框相对较快。您可以在O(n)时间内对象中的点数进行此操作。
min_x = min_y = min_z = MAX_NUMBER
max_x = max_y = max_z = MIN_NUMBER
foreach(point in object):
// transform point to desired coordinate system
p2 = transform(point)
if(p2.x < min_x ):
min_x = p2.x
if(p2.x > max_x ):
max_x = p2.x
if(p2.y < min_y ):
min_y = p2.y
if(p2.z > max_z ):
max_z = p2.z
if(p2.z < min_z ):
min_z = p2.z
if(p2.z > max_z ):
max_z = p2.z
边界框将由(min_x,min_y,min_z)...(max_x,max_y,max_z)给出。