diff --git a/packages/l7/src/version.ts b/packages/l7/src/version.ts index e9d795f13e..4655eecb70 100644 --- a/packages/l7/src/version.ts +++ b/packages/l7/src/version.ts @@ -1,2 +1,2 @@ -const version = '2.2.33'; +const version = '2.2.32'; export { version }; diff --git a/packages/layers/src/utils/extrude_polyline.ts b/packages/layers/src/utils/extrude_polyline.ts index e347b1b921..e44e0bf972 100644 --- a/packages/layers/src/utils/extrude_polyline.ts +++ b/packages/layers/src/utils/extrude_polyline.ts @@ -22,15 +22,26 @@ export function computeMiter( export function computeNormal(out: vec2, dir: vec2) { return vec2.set(out, -dir[1], dir[0]); } + export function direction(out: vec2, a: vec2, b: vec2) { vec2.sub(out, a, b); vec2.normalize(out, out); return out; } + function isPointEqual(a: vec2, b: vec2) { return a[0] === b[0] && a[1] === b[1]; } +function getArrayUnique(matrix: number[][]) { + const result: number[][] = []; + matrix.map((item) => { + item.sort((a, b) => b - a); + result.push(item); + }); + return result; +} + export interface IExtrudeLineOption { join: string; cap: string; @@ -80,16 +91,14 @@ export default class ExtrudePolyline { this.started = false; this.normal = null; this.totalDistance = 0; + // 去除数组里重复的点 + points = getArrayUnique(points); const total = points.length; let count = complex.startIndex; for (let i = 1; i < total; i++) { const last = points[i - 1] as vec2; const cur = points[i] as vec2; const next = i < points.length - 1 ? points[i + 1] : null; - // 如果当前点和前一点相同,跳过 - if (isPointEqual(last, cur)) { - continue; - } const amt = this.segment(complex, count, last, cur, next as vec2); count += amt; } diff --git a/packages/scene/__tests__/index.spec.ts b/packages/scene/__tests__/index.spec.ts index f1cbcc8cc2..a260186e3f 100644 --- a/packages/scene/__tests__/index.spec.ts +++ b/packages/scene/__tests__/index.spec.ts @@ -6,6 +6,7 @@ describe('template', () => { el.id = 'test-div-id'; el.style.width = '500px'; el.style.height = '500px'; + el.style.position = 'absolute'; document.querySelector('body')?.appendChild(el); const scene = new Scene({ id: 'test-div-id',