///<summary> /// Проверка самопересечения ломаной /// </summary> public static bool CheckSelfIntersection(List <Segment> segments) { int start_j = 1; for (int i = 0; i < segments.Count - 1; i++) { for (int j = start_j; j < segments.Count; j++) { if (i != j && i != j - 1 && j != i - 1) { if (Intersect.IsLinePartsIntersected(segments[i].Begin, segments[i].End, segments[j].Begin, segments[j].End)) // if (Intersect.IsIntersected(segments[i], segments[j])) { return(true); } } } start_j++; } return(false); }
///<summary> /// Проверка самопересечения многоугольника /// </summary> public static bool CheckSelfIntersection(List <Segment> segments) { int start_j = 1; // нет проверки пересечения для отрезка last-0 for (int i = 0; i < segments.Count - 1; i++) { for (int j = start_j; j < segments.Count; j++) { if (i != j && i != j - 1 && j != i - 1 && !(i == 0 && j == segments.Count - 1)) { if (Intersect.IsLinePartsIntersected(segments[i].Begin, segments[i].End, segments[j].Begin, segments[j].End)) // if (Intersect.IsIntersected(segments[i], segments[j])) { return(true); } } } start_j++; } return(false); }