//public static CCmpDbl_CoordVerySmall sComparer = new CCmpDbl_CoordVerySmall(); public override bool Equals(CValPairIncr <CPolygon> x, CValPairIncr <CPolygon> y) { if (x.val1.GID == y.val1.GID && x.val2.GID == y.val2.GID) { return(true); } else { return(false); } }
private Dictionary <CValPairIncr <CPolygon>, CptEdgeDis> GetCloseCpgPairPtEdgeDisDt_EdgeRelation( List <CPolygon> cpglt, double dblCloseDis) { var cedgelt = new List <CEdge>(); cpglt.ForEach(cpg => cedgelt.AddRange(cpg.CEdgeLt)); var CloseCpipeDt = new Dictionary <CValPairIncr <CPolygon>, CptEdgeDis>(cpglt.Count * 2, new CCmpEqCpgPairIncr()); foreach (var pEdgeRelation in CGeoFunc.DetectCEdgeRelations(cedgelt, dblCloseDis, true)) { var cpg1 = pEdgeRelation.CEdge1.BelongedCpg; var cpg2 = pEdgeRelation.CEdge2.BelongedCpg; if (cpg1.GID != cpg2.GID) { CptEdgeDis cptEdgeDis; var cpgpair = new CValPairIncr <CPolygon>(cpg1, cpg2); pEdgeRelation.cptEdgeDis.CpgPairIncr = cpgpair; if (CloseCpipeDt.TryGetValue(cpgpair, out cptEdgeDis)) { if (pEdgeRelation.cptEdgeDis.dblDis < cptEdgeDis.dblDis) { CloseCpipeDt[cpgpair] = pEdgeRelation.cptEdgeDis; } } else { CloseCpipeDt.Add(cpgpair, pEdgeRelation.cptEdgeDis); } } } foreach (var cptEdgeDis in CloseCpipeDt.Values) { cptEdgeDis.SetConnectEdge(); //set ConnectEdge for all the bridges } return(CloseCpipeDt); }
public override int GetHashCode(CValPairIncr <CPolygon> x) { return(Tuple.Create(x.val1.GID, x.val2.GID).GetHashCode()); }