Exemplo n.º 1
0
        ///<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);
        }
Exemplo n.º 2
0
        ///<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);
        }