增加余料归方算法

This commit is contained in:
ChenX
2023-12-06 20:37:51 +08:00
parent 063a010609
commit c558e758d7
23 changed files with 1217 additions and 120 deletions

View File

@@ -0,0 +1,48 @@
import { Box2, Vector2 } from "three";
/**
* 获取面积最大的矩形
* @param rects
* @returns
*/
declare function GetMaxAreaFn(rects: [number, number, number][]): number;
declare function GetMaxWidthFn(rects: [number, number, number][]): number;
declare function GetMaxHeightFn(rects: [number, number, number][]): 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: [number, number, number][]) => 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

View File

@@ -0,0 +1 @@
{"version":3,"file":"LargestInteriorRectangle.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/LargestInteriorRectangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAW/C;;;;GAIG;AACH,iBAAS,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAG/D;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAGhE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAGjE;AAuBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,wBAAwB;IAEjC,QAAQ,SAAO;IACf,SAAS,SAAO;IAChB,OAAO,SAAa;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAEzD,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,MAAM,CAAgB;IAGhF,MAAM,CAAC,YAAY,sBAAgB;IACnC,MAAM,CAAC,aAAa,uBAAiB;IACrC,MAAM,CAAC,cAAc,wBAAkB;;IAMvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;CAqS1C"}