public static bool Intersects(Rect aabb, OrientedRect obb) { var all = new Vector2(aabb.xMin, aabb.yMin); var alr = new Vector2(aabb.xMax, aabb.yMin); var aul = new Vector2(aabb.xMin, aabb.yMax); var aur = new Vector2(aabb.xMax, aabb.yMax); var bll = obb.LowerLeft; var blr = obb.LowerRight; var bul = obb.UpperLeft; var bur = obb.UpperRight; if (SeparatesOnAxis(Vector2.up, aabb.yMin, aabb.yMax, bll, blr, bul, bur)) { return(false); } if (SeparatesOnAxis(Vector2.right, aabb.xMin, aabb.xMax, bll, blr, bul, bur)) { return(false); } if (SeparatesOnAxis(obb.Forward, obb.ForwardMin, obb.ForwardMax, all, alr, aul, aur)) { return(false); } if (SeparatesOnAxis(obb.Right, obb.RightMin, obb.RightMax, all, alr, aul, aur)) { return(false); } return(true); }
public static bool Intersects(this OrientedRect obb, Rect aabb) { return(Intersects(aabb, obb)); }