Пример #1
0
 /**
  * 制作mesh边界的拓扑关系
  *
  * @param bordNodeList :边界Node列表
  */
 public void makeBorderTopo(List<NodeNew> bordNodeList) {
   if (bordNodeList.size() == 0) {
     return;
   }
   Collections.sort(
       bordNodeList,
       new Comparator<NodeNew>() {
         @Override
         public int compare(NodeNew o1, NodeNew o2) {
           if (o1.point.x > o2.point.x) {
             return 1;
           }
           if (o1.point.x < o2.point.x) {
             return -1;
           }
           if (o1.point.y > o2.point.y) {
             return 1;
           }
           if (o1.point.y < o2.point.y) {
             return -1;
           }
           return 0;
         }
       });
   // 合并相同边界Node
   NodeNew bordNode = bordNodeList.get(0);
   for (int i = 1; i < bordNodeList.size(); i++) {
     NodeNew node = bordNodeList.get(i);
     //			if("97A062A001F0001382".equals(bordNode.nodeId)){
     //				System.out.println("test");
     //			}
     // 判断合并条件 && // 合并边界点
     if (node.point.equals(bordNode.point) && bordNode.mergerBorderNode(node)) {
       node.delFlag = true;
       // 合并复杂路口对象
       // if(复杂路口)
       if (node.isIntersectionNode() && bordNode.isIntersectionNode()) {
         // 在复杂路口内遍历,找到包含bordNode node
         bordNode.intersection.mergerIntersection(node.intersection);
       }
     } else {
       bordNode = node;
     }
   }
   clearRoadList();
   clearNodeList();
   clearIntersectionList();
 }