private Point GetCenterPoint(MinimumUnit unit) { #if DEBUG // crash it in debug build to make sure all the caller never pass null and find the caller pass null into this function System.Diagnostics.Debug.Assert(unit != null); #endif int centerX = unit.GetRealUpLeft().X + unit.GetRealUpRight().X + unit.GetRealDownRight().X + unit.GetRealDownLeft().X; int centerY = unit.GetRealUpLeft().Y + unit.GetRealUpRight().Y + unit.GetRealDownRight().Y + unit.GetRealDownLeft().Y; return(new Point(centerX / 4, centerY / 4)); }
private Tuple <int, int> GetMinMaxY(MinimumUnit unit) { #if DEBUG // crash it in debug build to make sure all the caller never pass null and find the caller pass null into this function System.Diagnostics.Debug.Assert(unit != null); #endif int lowY = Math.Min(unit.GetRealUpRight().Y, unit.GetRealUpLeft().Y); int highY = Math.Max(unit.GetRealDownRight().Y, unit.GetRealDownLeft().Y); return(new Tuple <int, int>(lowY, highY)); }
private bool ExistLineBetweenUnits(LineSearchHelper lineSearchHelper, MinimumUnit unit1, MinimumUnit unit2) { MinimumUnit left, right; if (unit1.GetRealUpRight().X < unit2.GetRealUpRight().X) { left = unit1; right = unit2; } else { left = unit2; right = unit1; } int width = Math.Abs(right.GetRealUpRight().X - left.GetRealUpLeft().X); int height = Math.Abs(Math.Max(right.GetRealDownLeft().Y, left.GetRealDownLeft().Y) - Math.Min(right.GetRealUpLeft().Y, left.GetRealUpLeft().Y)); Rectangle rect = new Rectangle(left.GetRealUpLeft().X, left.GetRealUpLeft().Y, width, height); if (lineSearchHelper.ExistLineOnTheRegion(rect)) { return(true); } return(false); }