zoukankan      html  css  js  c++  java
  • rrt tree

    package com.bim.rrt_20190529;

    import static java.lang.Math.pow;
    import static java.lang.Math.sqrt;

    import java.util.ArrayList;


    public class Tree {
    Node root;//起点位置
      ArrayList<Node> nodeArrayList;

      
      public Tree(Node node) {
        root = new Node(node, 0, Double.POSITIVE_INFINITY, null);
        nodeArrayList = new ArrayList<Node>();
        nodeArrayList.add(root);
      }

      /**
       * 存入节点
       * @param parent
       * @param child
       */
      public void add(Node parent, Node child) {
        parent.addChild(child);
        nodeArrayList.add(child);
        child.setParent(parent);
      }

      /**
       * 移除点
       * @param node
       */
      public void remove(Node node) {
        node.getParent().removeChild(node);
        nodeArrayList.remove(node);
      }

      /**
       * 点是否存在
       * @param nodeReq
       * @return
       */
      public boolean contains(Node nodeReq) {
        return nodeArrayList.contains(nodeReq);
      }

      /**
      * 选择离随机点最近的点
      * @param randomNode
      * @return
      */
      public Node nearestNode(Node randomNode) {
       //System.out.println("计算距离:x="+randomNode.getX()+" y="+randomNode.getX()+" z="+randomNode.getZ());
       //System.out.println("计算距离:x="+root.getX()+" y="+root.getX()+" z="+root.getZ());
        double minDistance = distance(root, randomNode);//随机点和起点之间的距离
        Node nearestNode = root;
        for (Node node : nodeArrayList) {//遍历树上所有节点
          double currentDistance = distance(node, randomNode);//随机点和遍历点之间的距离
          if (currentDistance < minDistance) {
            minDistance = currentDistance;
            nearestNode = node;
          }
        }
        return nearestNode;
      }

      /**
      * 计算两个点之间的距离
      * @param node1
      * @param node2
      * @return
      */
      private double distance(Node node1,Node node2) {
        return sqrt(pow(node1.getX() - node2.getX(), 2) + pow(node1.getY() - node2.getY(), 2));
      }

    }

  • 相关阅读:
    数据量你造吗-JAVA分页
    编写高质量代码改善java程序的151个建议——[1-3]基础?亦是基础
    概率论快速学习03:概率公理补充
    概率论快速学习02:概率公理
    项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度
    项目ITP(五) spring4.0 整合 Quartz 实现任务调度
    编写高质量代码改善java程序的151个建议——导航开篇
    概率论快速学习01:计数
    改善JAVA代码01:考虑静态工厂方法代替构造器
    Python快速学习10: 循环的对象及设计 (生活的规律)
  • 原文地址:https://www.cnblogs.com/herd/p/10988020.html
Copyright © 2011-2022 走看看