From 0e8ecae4a1140c5e23475bbd589f591208e9ed65 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Mon, 04 Jan 2021 12:21:55 +0000
Subject: [PATCH] 代码注释
---
.idea/vcs.xml | 6 +++
app/src/main/java/com/demo/navtogether/utils/DijkstraUtils.java | 41 ++++++++++++--------
app/src/main/java/com/demo/navtogether/utils/PathPlan.java | 8 ++--
app/src/main/java/com/demo/navtogether/MainActivity.java | 21 +++++-----
4 files changed, 44 insertions(+), 32 deletions(-)
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/app/src/main/java/com/demo/navtogether/MainActivity.java b/app/src/main/java/com/demo/navtogether/MainActivity.java
index 9b2d2f4..da20037 100644
--- a/app/src/main/java/com/demo/navtogether/MainActivity.java
+++ b/app/src/main/java/com/demo/navtogether/MainActivity.java
@@ -84,12 +84,13 @@
}
/**
- * 创建随机位置
+ * 创建一个随机位置 坐标限制在 x 和 y内
* @param maxX
* @param maxY
* @return
*/
public Point random(int maxX,int maxY){
+ //设计边框距离,已避免部分地点名称出界
int marginX = (int) (getResources().getDisplayMetrics() .density*15)*2;
Point point = new Point();
@@ -122,7 +123,7 @@
}
int index = 0 ;
- ArrayList<ArrayList<PathPlan.Place>> customLists;
+ ArrayList<ArrayList<PathPlan.Place>> customLists = new ArrayList<>();
/**
* 自定义算法画线
* @param view
@@ -156,6 +157,9 @@
}
+ /**
+ * 自定义算法画线
+ */
public void drawLineCustome(){
if(customLists.size()>1){
Toast.makeText(MainActivity.this,"当前有"+customLists.size()+"路线规划",Toast.LENGTH_SHORT).show();
@@ -174,20 +178,15 @@
}
}
+ /**
+ * 刷新 重新加载地点
+ * @param view
+ */
public void refresh(View view) {
planPathView.clear();
customLists.clear();
int width = planPathView.getWidth();
int height = planPathView.getHeight();
- ArrayList<PathPlan.Place> places = new ArrayList<>();
- places.add(new PathPlan.Place("A",random(width,height),0));
- places.add(new PathPlan.Place("B",random(width,height),0));
- places.add(new PathPlan.Place("C",random(width,height),0));
- places.add(new PathPlan.Place("D",random(width,height),0));
- places.add(new PathPlan.Place("E",random(width,height),0));
- places.add(new PathPlan.Place("F",random(width,height),0));
- places.add(new PathPlan.Place("G",random(width,height),0));
- places.add(new PathPlan.Place("H",random(width,height),0));
animD = false;
animC = false;
planPathView.setAnimPoints(randomList(width,height),listener);
diff --git a/app/src/main/java/com/demo/navtogether/utils/DijkstraUtils.java b/app/src/main/java/com/demo/navtogether/utils/DijkstraUtils.java
index 824b40d..da44524 100644
--- a/app/src/main/java/com/demo/navtogether/utils/DijkstraUtils.java
+++ b/app/src/main/java/com/demo/navtogether/utils/DijkstraUtils.java
@@ -15,7 +15,7 @@
public class DijkstraUtils {
- HashMap<PathPlan.Place, PathPlan.Distance> distances;
+ HashMap<PathPlan.Place, PathPlan.Distance> distances;//每个点的信息集合
public DijkstraUtils(HashMap<PathPlan.Place, PathPlan.Distance> distances) {
this.distances = distances;
@@ -27,7 +27,7 @@
}
/**
- * 执行
+ * 执行算法
* @param start 起点
* @param end
*/
@@ -42,16 +42,16 @@
ArrayList<PathPlan.Place> places = new ArrayList<>();
places.add(start);
while (distances.size()>0){//循环遍历
- PathPlan.Place nearWay = findNearWay(startDis);
- startDis = distances.get(nearWay);
- deletePlace(nearWay);
- places.add(nearWay);
+ PathPlan.Place nearWay = findNearWay(startDis);//获取与其他点的最短个那一个
+ startDis = distances.get(nearWay);//距离信息
+ deletePlace(nearWay);//从集合中删除,避免下次循环再次出现该地点
+ places.add(nearWay);//添加到线路集合记录中
}
- if(end != null){
+ if(end != null){//如果有终点则最后追加
end.distance = endDis.distanceMap.get(places.get(places.size()-1));
places.add(end);
}
- return places;
+ return places;//返回规划的路线集合
}
@@ -113,10 +113,12 @@
ArrayList<ArrayList<PathPlan.Place>> arrayLists = new ArrayList<>();//路线记录
/**
* 自定义规划路线算法
+ * @param start 起始地点
+ * @param end 末尾地点
*/
public ArrayList<ArrayList<PathPlan.Place>> initCustomPathPlan( PathPlan.Place start,PathPlan.Place end){
arrayLists.clear();//清空记录
- ArrayList<PathPlan.Place > places = new ArrayList<>(distances.keySet());
+ ArrayList<PathPlan.Place > places = new ArrayList<>(distances.keySet());//所有地点集合
for(int i=1;i<=places.size();i++){
sortPlace(places,new ArrayList<PathPlan.Place>(),i,start,end);
}
@@ -128,17 +130,17 @@
/**
* 组合
- * @param datas
- * @param target
- * @param num
- * @param start 起始
- * @param end 末尾
+ * @param datas 地点数据
+ * @param target 整理的新路线
+ * @param num 循环的下标位置,即路线规划的地点数量
+ * @param start 起始地点
+ * @param end 末尾地点
*/
private void sortPlace(ArrayList<PathPlan.Place> datas, ArrayList<PathPlan.Place> target,int num,PathPlan.Place start,PathPlan.Place end) {
if (target.size() == num) {
ArrayList newDatas = new ArrayList( );
- ArrayList<PathPlan.Place > places = new ArrayList<>(distances.keySet());
- //数量不够,起始和末尾不对应
+ ArrayList<PathPlan.Place > places = new ArrayList<>(distances.keySet());//所有地点集合
+ //数量不够,起始和末尾不对应,则不再执行
if(places.size()> num || start!=null && !target.get(0).equals(start) || end!=null && !target.get(target.size()-1).equals(end)){
return;
}
@@ -154,7 +156,7 @@
//记录最短距离
if(dist == -1 || dist >= tempDist){
if(dist > tempDist){
- arrayLists.clear();
+ arrayLists.clear();//清除之前的数据
}
dist = tempDist;
arrayLists.add(newDatas);
@@ -171,6 +173,11 @@
sortPlace(newDatas, newTarget,num,start,end);
}
}
+
+ /**
+ * 创建一个随机位置 坐标在0-100内
+ * @return
+ */
public static Point random(){
Point point = new Point();
diff --git a/app/src/main/java/com/demo/navtogether/utils/PathPlan.java b/app/src/main/java/com/demo/navtogether/utils/PathPlan.java
index a3090d1..79139a6 100644
--- a/app/src/main/java/com/demo/navtogether/utils/PathPlan.java
+++ b/app/src/main/java/com/demo/navtogether/utils/PathPlan.java
@@ -7,7 +7,7 @@
import java.util.TreeMap;
/**
- * My father is Object, ites purpose of 线路规划
+ * My father is Object, ites purpose of 距离
*
* @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-12-23.
*/
@@ -40,7 +40,7 @@
public Point point;
//权重,优先权
public int priority;
- //上一站距離
+ //上一站距離,计算时补充,初始化为0
public double distance;
public Place(Place place){
@@ -78,8 +78,8 @@
* 距离
*/
public static class Distance{
- public Place place;
- public HashMap<Place,Double> distanceMap = new HashMap();
+ public Place place;//地点
+ public HashMap<Place,Double> distanceMap = new HashMap();//保存与其他所有地点的距离集合
public Distance(Place place ) {
this.place = place;
}
--
Gitblit v1.9.1