|
|
|
@ -15,17 +15,17 @@ import { FuzzyFactory } from '../../csg/core/FuzzyFactory';
|
|
|
|
|
* @param rects
|
|
|
|
|
* @returns
|
|
|
|
|
*/
|
|
|
|
|
function GetMaxAreaFn(rects: [number, number, number][]): number
|
|
|
|
|
function GetMaxAreaFn(rects: [number, number, number, number, number][]): number
|
|
|
|
|
{
|
|
|
|
|
return Max(rects, (t1, t2) => t2[0] > t1[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMaxWidthFn(rects: [number, number, number][]): number
|
|
|
|
|
function GetMaxWidthFn(rects: [number, number, number, number, number][]): number
|
|
|
|
|
{
|
|
|
|
|
return Max(rects, (t1, t2) => t2[1] > t1[1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMaxHeightFn(rects: [number, number, number][]): number
|
|
|
|
|
function GetMaxHeightFn(rects: [number, number, number, number, number][]): number
|
|
|
|
|
{
|
|
|
|
|
return Max(rects, (t1, t2) => t2[2] > t1[2]);
|
|
|
|
|
}
|
|
|
|
@ -80,7 +80,7 @@ export class LargestInteriorRectangle
|
|
|
|
|
/** 可以自定义过滤函数,以便过滤掉某些不需要的矩形,当返回true时,我们会过滤它 */
|
|
|
|
|
FilterRectFn: (width: number, height: number) => boolean;
|
|
|
|
|
|
|
|
|
|
GetMaxRectIndexFn: (rects: [number, number, number][]) => number = GetMaxAreaFn;
|
|
|
|
|
GetMaxRectIndexFn: (rects: [number, number, number, number, number][]) => number = GetMaxAreaFn;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static GetMaxAreaFn = GetMaxAreaFn;
|
|
|
|
@ -338,7 +338,7 @@ export class LargestInteriorRectangle
|
|
|
|
|
|
|
|
|
|
while (rects.length)
|
|
|
|
|
{
|
|
|
|
|
let maxIndex = Max(rects, (t1, t2) => t2[0] > t1[0]);
|
|
|
|
|
let maxIndex = this.GetMaxRectIndexFn(rects);
|
|
|
|
|
|
|
|
|
|
let [area, maxXIndex, maxYIndex, xCount, yCount] = rects[maxIndex];
|
|
|
|
|
|
|
|
|
|