コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }