求相对坐标轴的AABB包围盒大小
abs(旋转矩阵) * halfSize可以用来求相对坐标轴的AABB包围盒halfSize。
下面的代码也能求出AABB包围盒的size。
public static Vector2 GetAABBSize(Vector2 boxHalfSize, B2_Mat22 rot) { Vector2[] verts = new Vector2[4]; verts[0] = new Vector2(-boxHalfSize.x, -boxHalfSize.y); verts[1] = new Vector2(-boxHalfSize.x, boxHalfSize.y); verts[2] = new Vector2(boxHalfSize.x, boxHalfSize.y); verts[3] = new Vector2(boxHalfSize.x, -boxHalfSize.y); for (int i = 0; i < 4; ++i) { verts[i] = rot * verts[i]; } //A在世界空间的包围盒 Vector2 min = verts[0]; Vector2 max = min; for (int i = 1; i < 4; ++i) { min = Vector2.Min(verts[i], min); max = Vector2.Max(verts[i], max); } Vector2 aabbSize = max - min; return aabbSize; } GetAABBSize(boxHalfSize, RotLocalToWorld); //相对世界坐标轴的AABB包围盒大小 GetAABBSize(boxHalfSize, RotLocalAToLocalB); //相对B模型空间坐标轴的AABB包围盒大小