Пример #1
0
        public int OverlappingArea(Fabric input)
        {
            var aX = Enumerable.Range(this.X + 1, this.W);
            var bX = Enumerable.Range(input.X + 1, input.W);
            var aY = Enumerable.Range(this.Y + 1, this.H);
            var bY = Enumerable.Range(input.Y + 1, input.H);

            int overlappingX = 0;

            foreach (var x in aX)
            {
                if (bX.Contains(x))
                {
                    overlappingX++;
                }
            }
            int overlappingY = 0;

            foreach (var y in aY)
            {
                if (bY.Contains(y))
                {
                    overlappingY++;
                }
            }

            return(overlappingX * overlappingY);
        }
Пример #2
0
        public bool Overlap(Fabric input)
        {
            // x1 <= y2 && y1 <= x2
            var objA = this;
            var objB = input;

            if (objA.X + 1 <= objB.X + 1 + objB.W - 1 && objB.X + 1 <= objA.X + 1 + objA.W - 1)
            {
                if (objA.Y + 1 <= objB.Y + 1 + objB.H - 1 && objB.Y + 1 <= objA.Y + 1 + objA.H - 1)
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #3
0
        public List <Coordinate> OverlappingCoordinates(Fabric input)
        {
            var overlappingCoordinates = new List <Coordinate>();
            var aX = Enumerable.Range(this.X + 1, this.W);
            var bX = Enumerable.Range(input.X + 1, input.W);
            var aY = Enumerable.Range(this.Y + 1, this.H);
            var bY = Enumerable.Range(input.Y + 1, input.H);

            foreach (var x in aX)
            {
                foreach (var y in aY)
                {
                    if (bX.Contains(x) && bY.Contains(y))
                    {
                        overlappingCoordinates.Add(new Coordinate {
                            X = x, Y = y
                        });
                    }
                }
            }

            return(overlappingCoordinates);
        }