Browse Source

修改线上业务空间创建 回字状业务空间 创建出来是一片的问题

haojianlong 5 years ago
parent
commit
39f071a50f
1 changed files with 35 additions and 3 deletions
  1. 35 3
      src/components/business_space/newGraphy/graphy.vue

+ 35 - 3
src/components/business_space/newGraphy/graphy.vue

@@ -187,12 +187,12 @@ export default {
     }
   },
   computed: {
-    ...mapGetters("layout", ["projectId","projects"]),
+    ...mapGetters("layout", ["projectId", "projects"]),
     projectName() {
       let projectObj = this.projects.find(item => {
         return item.id == this.projectId
       })
-      return projectObj?projectObj.name?projectObj.name:projectObj.id:this.projectId
+      return projectObj ? projectObj.name ? projectObj.name : projectObj.id : this.projectId
     }
   },
   created() {
@@ -1160,7 +1160,7 @@ export default {
       let scale = this.view.scale;
       this.view.scaleByPoint(val / scale, this.canvasWidth / 2, this.canvasHeight / 2);
     },
-    // 给定多个轮廓线的数据,计算得到面积最大值,并把它放置数组第一项
+    // 给定多个轮廓线的数据,计算得到面积最大值,并把它放置数组第一项,并将第一项顺时针处理,第一项以后的每一项做逆时针处理
     // list {XYZ}[][]
     makeMaxAreaFirst(list) {
       let arr = [], area = 0;
@@ -1172,7 +1172,39 @@ export default {
           arr.push(list[i])
         }
       }
+      arr.map((t, i) => {
+        if (!i) {
+          if (this.clockDir(t) > 0) {
+            return t
+          } else {
+            return t.reverse()
+          }
+        } else {
+          if (this.clockDir(t) > 0) {
+            return t.reverse()
+          } else {
+            return t
+          }
+        }
+      })
       return arr;
+    },
+    // 数组为顺时针or逆时针 顺时针非负 逆时针为 负
+    clockDir(pointList) {
+      if (pointList.length < 3) {
+        return 0;
+      }
+      let index = 0;
+      let len = pointList.length;
+      for (let i = 1; i < len; i++) {
+        if (pointList[i].X > pointList[index].X) {
+          index = i;
+        }
+      }
+      let p1 = pointList[index == 0 ? len - 1 : index - 1];
+      let p2 = pointList[index];
+      let p3 = pointList[(index + 1) % len];
+      return (p2.X - p1.X) * (p3.Y - p2.Y) - (p2.Y - p1.Y) * (p3.X - p2.X);
     }
   },
   filters: {