private void EliminateCoincideLines(List <Line2D> oldLines) { int k = 0; List <Line2D> removeLines = new List <Line2D>(); for (int i = 0; i < oldLines.Count; i++) { k = 0; for (int j = i + 1; j < oldLines.Count; j++) { GraphicAlgorithm.TwoParallelLines2D twoLines = new GraphicAlgorithm.TwoParallelLines2D(oldLines[i], oldLines[j]); if (twoLines.Relationship == GraphicAlgorithm.TwoParallelLinesRelationship.完全相同) { k++; removeLines.Add(oldLines[j]); break; } } if (k > 0) { break; } } if (k > 0) { removeLines.ForEach(x => oldLines.Remove(x)); EliminateCoincideLines(oldLines); } }
public List <Line2D> GetAddedLines(List <Rectangle2D> miniRectangles) { List <Line2D> addedLines = new List <Line2D>(); //miniRectangles = GetMinRectangle(); List <Line2D> originalLines = GetAllLineInsideFloorRegion(); List <Line2D> tempLines = new List <Line2D>(); miniRectangles.ForEach(x => tempLines.AddRange(x.GetEdges())); EliminateCoincideLines(tempLines); foreach (var item in tempLines) { foreach (var line in originalLines) { GraphicAlgorithm.TwoParallelLines2D twoLines = new GraphicAlgorithm.TwoParallelLines2D(item, line); if (twoLines.Relationship == GraphicAlgorithm.TwoParallelLinesRelationship.线段1全在线段2内 || twoLines.Relationship == GraphicAlgorithm.TwoParallelLinesRelationship.完全相同) { addedLines.Add(item); } } } addedLines.ForEach(x => tempLines.Remove(x)); return(tempLines); }