|
@@ -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[] =>
|