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); }
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); }
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); }
/// <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); }