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

    }

  • 相关阅读:
    20155325 2016-2017-2 《Java程序设计》课程总结
    实验五 网络编程与安全
    2017-2018-1 20155314 20155323   实验一  开发环境的熟悉
    2017-2018-1 20155323 《信息安全系统设计基础》第4周学习总结
    2017-2018-1 20155323 《信息安全系统设计基础》第3周学习总结
    # 2017-2018-1 20155323 《信息安全系统设计基础》第2周学习总结
    2017-2018-1 20155323 《信息安全系统设计基础》第1周学习总结
    C语言复习20170826
    C语言复习20170821
    C语言复习20170805
  • 原文地址:https://www.cnblogs.com/herd/p/10988020.html
Copyright © 2011-2022 走看看