Ver código fonte

算法修改

haojianlong 4 anos atrás
pai
commit
f529e0e7e7
1 arquivos alterados com 7 adições e 7 exclusões
  1. 7 7
      src/utils/SMathUtil.ts

+ 7 - 7
src/utils/SMathUtil.ts

@@ -194,7 +194,7 @@ export class SMathUtil {
         let intersectionX = (b2 - b1) / (k1 - k2);
         let intersectionY = k1 * intersectionX + b1;
         let minX = Math.min(line1.x1, line1.x2);
-        let maxX = Math.min(line2.x1, line2.x2);
+        let maxX = Math.max(line2.x1, line2.x2);
         if (intersectionX >= minX && intersectionX <= maxX) {
             return new SPoint(intersectionX, intersectionY);
         }
@@ -256,7 +256,7 @@ 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
@@ -272,18 +272,18 @@ export class SMathUtil {
                     poly2.regions.push(array[i]);
                 }
             }
-            indexArr.unshift(0);
             console.log(indexArr);
-            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 => {
                         return new SPoint(t[0], t[1]);
                     }