任一存 1 year ago
parent
commit
460fb733bf
2 changed files with 27 additions and 17 deletions
  1. 15 9
      README.md
  2. 12 8
      src/App.vue

+ 15 - 9
README.md

@@ -3,24 +3,24 @@
 
 访问url:
 
-# 补点功能
-得到点位所遵循的网格信息:横竖斜率和最近两点间距离和次最近两点间距离。 check
+# 补点功能(复杂度:框选区域面积的平方)
+得到点位所遵循的网格信息:横竖斜率和最近两点间距离和次最近两点间距离。
 
-得到框选区域px坐标 check
+得到框选区域px坐标
 
-px坐标转为原始坐标 check
+px坐标转为原始坐标
 
-连通规则设置:默认是大于一米认为不连通,可手动调整。 check
+连通规则设置:默认是大于一米认为不连通,可手动调整。
 
-高度设置功能:必须指定高度。 check
+高度设置功能:必须指定高度。
 
-筛选出框选区域可能影响到的所有外围和内部已存在的点,记录其idx。只在符合当前连通高度限制的点中做筛选。 check
+筛选出框选区域可能影响到的所有外围和内部已存在的点,记录其idx。只在符合当前连通高度限制的点中做筛选。
 
 如果有重叠的点(只能两两比较了),则要求重设连通高度限制以避免。 todo
 
-要求框选区域中必须有已存在的点,选择一个作为起始点 check
+要求框选区域中必须有已存在的点,选择一个作为起始点
 
-先记录两个列表:外围点位表和框内已有点位表。 check
+先记录两个列表:外围点位表和框内已有点位表。
 
 要补的点构成一个稀疏图,用邻接表存储。补点的过程就是邻接表不断增长的过程:依次处理每个点n,把n的所有还没有被添加进顶点表的相邻点push进顶点表,同时记录到n的边表,然后处理顶点表中下一个点。如果相邻点在选中区域以外,则忽略。直到邻接表不再增长,就说明选中空间内已经补全了点。
 
@@ -43,6 +43,7 @@ for 每个当前点
       加入顶点表
       记录与其关系
 ```
+
 新补的点颜色半透明。
 
 (
@@ -51,6 +52,11 @@ for 每个当前点
   给不出具体规则,我就只能按照这个规则了。
 )
 
+# todo
+添加提示: 每次补点区域尽量小(复杂度:框选区域面积的平方)
+
+颜色规则说明
+
 save
 
 undo, redo

+ 12 - 8
src/App.vue

@@ -102,6 +102,7 @@
           <el-input
             v-model="formData.maxHeight"
             type="number"
+            step="any"
           />
         </el-form-item>
         <el-form-item
@@ -110,6 +111,7 @@
           <el-input
             v-model="formData.minHeight"
             type="number"
+            step="any"
           />
         </el-form-item>
         <div class="btn-group">
@@ -142,6 +144,7 @@
           <el-input
             v-model="formData.connectionMaxHeightGap"
             type="number"
+            step="any"
           />
         </el-form-item>
         <el-form-item
@@ -150,6 +153,7 @@
           <el-input
             v-model="formData.addPointHeight"
             type="number"
+            step="any"
           />
         </el-form-item>
         <div class="btn-group">
@@ -260,8 +264,8 @@ export default {
   name: 'App',
   data() {
     return {
-      sceneNameOrUrl: 'SS-t-XkquhxxurM',
-      // sceneNameOrUrl: 'SS-t-NZUICC2fRLi',
+      // sceneNameOrUrl: 'SS-t-XkquhxxurM',
+      sceneNameOrUrl: 'SS-t-NZUICC2fRLi',
       infoText: '',
       loadingHandler: null,
       formData: {
@@ -388,7 +392,7 @@ export default {
       })
 
       resetGlobalVars()
-      gNode.selectAll('rect').remove()
+      // gNode.selectAll('rect').remove()
       gNode.selectAll('circle').remove()
       
 
@@ -400,6 +404,7 @@ export default {
       })
     },
     renderWholePoints() {
+      // gNode.selectAll('rect').remove()
       const that = this
 
       // 相邻点位间距离
@@ -688,6 +693,9 @@ export default {
 
     },
     onAddPoint() {
+      this.renderWholePoints()
+      return
+
       // 解析svg的transform信息
       let translateX = 0
       let translateY = 0
@@ -765,12 +773,8 @@ export default {
         }
       }
 
-      if (!affectedPointList.length) {
-        window.alert('请在已有点位附近新增点位。')
-        return
-      }
       if (!pointInBrushList.length) {
-        window.alert('请保证框选区域内至少已有一个点位。')
+        window.alert('请保证:1.框选区域内至少已存在一个点位;2.该点位高度与补点高度之间差距不超过高度差上限。该点位将作为点位生长起点。')
         return
       }