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));
}
}
最新文章
- iOS10字体
- linux文件上传,给文件或目录添加apache权限
- 用minidwep-gtk研究wifi
- 【leetcode】13. Roman to Integer
- sencha touch 框架的几种核心脚本文件之间的区别
- java 服务端解决ajax跨域问题
- NetAnalyzer笔记 之 五 一些抓包技巧分享(不定期更新)
- 一个简单的Java集合范围过滤的多个方式对比
- C语言中strcpy,strcmp,strlen,strcat函数原型
- [项目记录] 用c语言完成的一个学生成绩管理系统
- 使用 EclEmma 进行覆盖测试
- grep 同时满足多个关键字、满足任意关键字和排除关键字
- Java进阶(三十四)Integer与int的种种比较你知道多少?
- python3字典练习(重要)
- 基本标签-html-1
- 如何配置Linux系统防火墙,以防止DDOS攻击?
- 巧用style的另类写法
- Mysql中的delimiter详解
- python数据分析基础——numpy和matplotlib
- 算法与数据结构实验题 4.2 小 F 打怪
热门文章
- springboot 使用 @data 插件,减少代码量
- 向量的一种特殊乘法 element wise multiplication
- sklearn线性回归实现房价预测模型
- webpac4k运行webpack .\src\main.js .\dist\bundle.js打包出错
- Vue.js项目中使用 Ajax 和 FormDate 对象上传文件
- 001-官网安装openstack之-安装前基础环境准备
- python3.6中 字典类型和字符串类型互相转换的方法
- hibernate配置和映射文件
- centos 7.3 开放端口并对外开放
- 004_linuxC++之_函数的重载