From 42a5766a1f12614a178fffd14d3688f655a1caac Mon Sep 17 00:00:00 2001 From: ChenX Date: Mon, 18 Dec 2023 11:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=8F=91:=E4=BC=98=E5=8C=96=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E5=86=85=E6=8E=A5=E7=9F=A9=E5=BD=A2=E7=9A=84API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../testEntity/LargestInteriorRectangle.ts | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Add-on/testEntity/LargestInteriorRectangle.ts b/src/Add-on/testEntity/LargestInteriorRectangle.ts index 85baf3177..010238bcc 100644 --- a/src/Add-on/testEntity/LargestInteriorRectangle.ts +++ b/src/Add-on/testEntity/LargestInteriorRectangle.ts @@ -9,25 +9,27 @@ import { arrayPushArray, arraySortByNumber } from "../../Nest/Common/ArrayExt"; import { Max } from '../../Nest/Common/Util'; import { FuzzyFactory } from '../../csg/core/FuzzyFactory'; +/** [area maxXIndex maxYIndex xCount yCount,width,height] */ +export type RectData = [number, number, number, number, number, number, number]; /** * 获取面积最大的矩形 * @param rects * @returns */ -function GetMaxAreaFn(rects: [number, number, number, number, number][]): number +function GetMaxAreaFn(rects: RectData[]): number { return Max(rects, (t1, t2) => t2[0] > t1[0]); } -function GetMaxWidthFn(rects: [number, number, number, number, number][]): number +function GetMaxWidthFn(rects: RectData[]): number { - return Max(rects, (t1, t2) => t2[1] > t1[1]); + return Max(rects, (t1, t2) => t2[5] > t1[5]); } -function GetMaxHeightFn(rects: [number, number, number, number, number][]): number +function GetMaxHeightFn(rects: RectData[]): number { - return Max(rects, (t1, t2) => t2[2] > t1[2]); + return Max(rects, (t1, t2) => t2[6] > t1[6]); } @@ -80,7 +82,7 @@ export class LargestInteriorRectangle /** 可以自定义过滤函数,以便过滤掉某些不需要的矩形,当返回true时,我们会过滤它 */ FilterRectFn: (width: number, height: number) => boolean; - GetMaxRectIndexFn: (rects: [number, number, number, number, number][]) => number = GetMaxAreaFn; + GetMaxRectIndexFn: (rects: RectData[]) => number = GetMaxAreaFn; static GetMaxAreaFn = GetMaxAreaFn; @@ -283,8 +285,8 @@ export class LargestInteriorRectangle } } - //area maxXIndex maxYIndex xcount ycount - let rects: [number, number, number, number, number][] = []; + //area maxXIndex maxYIndex xcount ycount,width,height + let rects: RectData[] = []; for (let j = 0; j < n; j++) // 对于每一列,使用基于柱状图的方法 { @@ -332,7 +334,7 @@ export class LargestInteriorRectangle //面积小于最小允许面积 if (area < this.MinArea) continue; - rects.push([area, down[i], j, xCount, yCount]); + rects.push([area, down[i], j, xCount, yCount, width, height]); } }