Exemple #1
0
        // 检查两线段相交情况,将交点加入相应线段交点数组
        static bool CheckCross(LineSegment s1, LineSegment s2)
        {
            var crosser = LineSegment.CheckCross(s1, s2);

            if (crosser == null)
            {
                return(false);
            }
            double r1 = crosser.Item1, r2 = crosser.Item2;

            if (r1 < 0 || r2 < 0 || r1 > 1 || r2 > 1)
            {
                return(false);
            }

            // 写入对应位置
            if (r1 < 1)
            {
                if (!segSplit.ContainsKey(s1))
                {
                    segSplit[s1] = new SortedSet <double>();
                }
                segSplit[s1].Add(r1);
            }
            if (r2 < 1)
            {
                if (!segSplit.ContainsKey(s2))
                {
                    segSplit[s2] = new SortedSet <double>();
                }
                segSplit[s2].Add(r2);
            }

            return(true);
        }