import { Box2, Vector2 } from "three";
/** [area maxXIndex maxYIndex xCount yCount,width,height] */
export type RectData = [number, number, number, number, number, number, number];
/**
 * 获取面积最大的矩形
 * @param rects
 * @returns
 */
declare function GetMaxAreaFn(rects: RectData[]): number;
declare function GetMaxWidthFn(rects: RectData[]): number;
declare function GetMaxHeightFn(rects: RectData[]): number;
/**
 * @example
 *
 * //1. 设置过滤条件(舍弃掉一些无用的矩形)
 * let lir = new LargestInteriorRectangle;
 * lir.MinWidth = 200;//设置最小可以接受的矩形宽度
 * lir.MinHeight = 200;//设置最小可以接受的矩形宽度
 * lir.MinArea = 200 * 200;//设置最小可以接受的矩形面积
 *
 * //除了变量 也可以设置过滤函数
 * //例如:
 * lir.FilterRectFn = (w,h)=> !(w>500 || h>500)   //这样将对长或者宽不足500的矩形板过滤(舍弃)
 *
 * //2. 可以设置优先模式,默认提供了面积优先,你也可以使用宽度优先或者高度优先,或许默认规则可能不好用,可以自定义传入自定义函数.
 * lir.GetMaxRectIndexFn = LargestInteriorRectangle.GetMaxAreaFn; //或者 LargestInteriorRectangle.GetMaxWidthFn / LargestInteriorRectangle.GetMaxHeightFn
 *
 * //3. 你已经设置好解析器,你现在可以进行解析了
 * let rects = lir.ParseLir([ new Vector3(0,0,0) , new Vector3(100,0,0) , new Vector3(50,100,0)]) //首尾不需要重复,首尾重复可能造成错误,程序不再校验
 *
 */
export declare class LargestInteriorRectangle {
    MinWidth: number;
    MinHeight: number;
    MinArea: number;
    /** 可以自定义过滤函数,以便过滤掉某些不需要的矩形,当返回true时,我们会过滤它 */
    FilterRectFn: (width: number, height: number) => boolean;
    GetMaxRectIndexFn: (rects: RectData[]) => number;
    static GetMaxAreaFn: typeof GetMaxAreaFn;
    static GetMaxWidthFn: typeof GetMaxWidthFn;
    static GetMaxHeightFn: typeof GetMaxHeightFn;
    constructor();
    /**
     * 分析最大内接矩形
     * @param polygonPts 多边形点表,首尾不要相等
     */
    ParseLIR(polygonPts: Vector2[]): Box2[];
}
export {};
//# sourceMappingURL=LargestInteriorRectangle.d.ts.map