示例#1
0
        public void SegmentIntersctionTest2()
        {
            var res = GeometricSolver.AreSegmentsIntersect(
                new Point(152.4, 133.35),
                new Point(205.7, 114.30),
                new Point(160, 140),
                new Point(180, 114));

            Assert.IsTrue(res);
        }
示例#2
0
        public void SegmentIntersctionTest3()
        {
            var res = GeometricSolver.AreSegmentsIntersect(
                new Point(10, 10),
                new Point(100, 100),
                new Point(50, 0),
                new Point(50, 60));

            Assert.IsTrue(res);
        }
示例#3
0
        public void SegmentIntersctionTest1()
        {
            var res = GeometricSolver.AreSegmentsIntersect(
                new Point(0, 0),
                new Point(5, 5),
                new Point(0, 5),
                new Point(5, 0));

            Assert.IsTrue(res);
        }
示例#4
0
        /// <summary>
        /// Подсчет всех пересечений в данной конфигурации платы
        /// </summary>
        /// <returns></returns>
        public int GetIntersectionsNumber()
        {
            // TODO: get number of the intersections
            var netlist           = GetAllNets(this);
            int intersectionCount = 0;

            for (int i = 0; i < netlist.Count; i++)
            {
                for (int j = i + 1; j < netlist.Count; j++)
                {
                    if (GeometricSolver.AreSegmentsIntersect(netlist[i].Item1, netlist[i].Item2, netlist[j].Item1,
                                                             netlist[j].Item2))
                    {
                        intersectionCount++;
                    }
                }
            }
            #region
            //for (int i =0; i < NetList.Count; i++)
            //{
            //    Point p1 = new Point(NetList[i].Pad1.Module.Position + NetList[i].Pad1.Position);
            //    if (NetList[i].Pad2 == null)
            //        continue;
            //    Point p2 = new Point(NetList[i].Pad2.Module.Position + NetList[i].Pad2.Position);
            //    for (int j = i+1; j < NetList.Count; j++)
            //    {
            //        Point q1 = new Point(NetList[j].Pad1.Module.Position + NetList[j].Pad1.Position);
            //        if (NetList[j].Pad2 ==null)
            //            continue;
            //        Point q2 = new Point(NetList[j].Pad2.Module.Position + NetList[j].Pad2.Position);
            //            if (PrintedCircuitBoard.AreSegmentsIntersect(p1, p2, q1, q2))
            //                intersectionCount++;
            //    }

            //}
            #endregion
            return(intersectionCount);
        }