فهرست منبع

交集计算修改

haojianlong 4 سال پیش
والد
کامیت
70ee24690e

+ 3 - 0
persagy-web-big/README.md

@@ -6,6 +6,9 @@ item 展示类及楼层平面图展示
     无特殊说明单版本为跟随依赖版本升级
     |
     |
+    |-- 2.2.50 | -- 数学计算工具类 计算数组中每一项的交集,并返回外轮廓与内轮廓 算法修改
+    |
+    |
     |-- 2.2.48 | -- 修改门画法
     |
     |

+ 1 - 1
persagy-web-big/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@persagy-web/big",
-    "version": "2.2.49",
+    "version": "2.2.50",
     "description": "博锐尚格建筑信息化库",
     "main": "lib/index.js",
     "types": "lib/index.d.js",

+ 2 - 1
persagy-web-big/src/items/SPolygonItem.ts

@@ -576,7 +576,8 @@ export class SPolygonItem extends SGraphStyleItem {
             this.pointList.forEach((it): void => {
                 let x = it.x,
                     y = it.y;
-                if (x < this.minX) {this.minX = x;
+                if (x < this.minX) {
+                    this.minX = x;
                 }
 
                 if (y < this.minY) {

+ 7 - 6
persagy-web-big/src/utils/SMathUtil.ts

@@ -296,8 +296,9 @@ export class SMathUtil {
             };
             // @ts-ignore
             poly2.regions.push(array[array.length - 1]);
+            // 存储外轮廓索引
             let indexArr: number[] = [array.length - 1];
-            for (let i = array.length - 2; i > 0; i--) {
+            for (let i = array.length - 2; i >= 0; i--) {
                 let poly1 = {
                     regions: [],
                     inverted: false
@@ -312,17 +313,17 @@ export class SMathUtil {
                     poly2.regions.push(array[i]);
                 }
             }
-            indexArr.unshift(0);
-            for (let i = 0; i < indexArr.length - 1; i++) {
+            for (let i = 0; i < indexArr.length; i++) {
+                // 从已有的数组中返回选定的元素
                 let axArr = array.slice(
-                    i == 0 ? 0 : indexArr[i] + 1,
-                    indexArr[i + 1]
+                    i == 0 ? 0 : indexArr[i - 1],
+                    indexArr[i]
                 );
                 let outline: Outline = {
                     Outer: [],
                     Inner: []
                 };
-                outline.Outer = array[indexArr[i + 1]].map(
+                outline.Outer = array[indexArr[i]].map(
                     (t): SPoint => new SPoint(t[0], t[1])
                 );
                 outline.Inner = axArr.map((t): SPoint[] =>