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); }
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); }
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); }