开发:优化简化函数,提供尖角化多段线函数

This commit is contained in:
ChenX
2023-11-01 10:45:17 +08:00
parent c81cda5cb5
commit e02890783b
42 changed files with 577 additions and 874 deletions

View File

@@ -0,0 +1,11 @@
import { Task } from "../../Common/ThreadPool/Task";
export type CSGTask = Pick<Task, "key" | "data" | "then">;
type CSGSubtractFunction = (task: CSGTask) => void;
export declare const _CSGSubtractInjectInteractionFunctions: CSGSubtractFunction[];
export declare function AddCSGSubtractTask(task: CSGTask): void;
export type TaskKey = Pick<Task, "key">;
type TerminateCSGTaskFunction = (task: TaskKey) => void;
export declare const _TerminateTaskInjectInteractionFunctions: TerminateCSGTaskFunction[];
export declare function TerminateCSGTask(task: TaskKey): void;
export {};
//# sourceMappingURL=CSGSubtractTaskManager.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CSGSubtractTaskManager.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/CSGSubtract/CSGSubtractTaskManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEpD,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAE1D,KAAK,mBAAmB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AACnD,eAAO,MAAM,sCAAsC,EAAE,mBAAmB,EAAO,CAAC;AAChF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,QAI/C;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,KAAK,wBAAwB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AACxD,eAAO,MAAM,wCAAwC,EAAE,wBAAwB,EAAO,CAAC;AACvF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,QAI7C"}

View File

@@ -8,7 +8,7 @@ export declare const ARC_DRAW_CONFIG: {
Arc_MinSplitCount: number;
ARC_MaxSplitCount: number;
};
export declare function GetArcDrawCount(arc: Arc | Circle): number;
export declare function GetArcDrawCount(arc: Arc | Circle | number): number;
/**
*
* @param cu

View File

@@ -1 +1 @@
{"version":3,"file":"SplitCurveParams.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/ExtrudeMeshGeomBuilder/SplitCurveParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAO5E,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAGF,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,MAAM,CAQzD;AAGD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,EAAE,CA2ClE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,GAAG,OAAO,EAAE,CAgCnE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAmBjD"}
{"version":3,"file":"SplitCurveParams.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/ExtrudeMeshGeomBuilder/SplitCurveParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAO5E,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAGF,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CASlE;AAGD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,EAAE,CA2ClE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,mBAAmB,GAAG,OAAO,EAAE,CAgCnE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAmBjD"}

View File

@@ -1,4 +1,4 @@
import { BufferGeometry, Geometry, Vector3 } from "three";
import { BufferGeometry, Geometry, Vector2, Vector3 } from "three";
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry";
import { Curve } from "../DatabaseServices/Entity/Curve";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
@@ -8,14 +8,30 @@ import { Polyline } from "../DatabaseServices/Entity/Polyline";
*/
export declare class SweepGeometry extends Geometry {
edgePts: number[];
polygonIndexes: any[];
ShapeMaterialSlotData: number[];
constructor(contour: Polyline, path: Curve[] | Curve, ShapeMaterialSlotData?: number[]);
get LineGeom(): LineGeometry;
get EdgeGeom(): BufferGeometry;
AddShape(contour: Polyline, path: Curve): void;
AddShape2(contour: Polyline, paths: Curve[]): void;
private BuildSideFaces;
private BuildLid;
/**
* 使用4点构建面
* @param a 左下
* @param b 右下
* @param c 左上
* @param d 右上
* @param uvs
* @param [materialIndex]
*/
protected BuildFace4(a: number, b: number, c: number, d: number, uvs: Vector2[], materialIndex?: number): void;
/**
* 构造边缘面开始标记
* @param dir 前进方向(单位向量)
*/
protected SideStartMark(dir: Vector3): void;
protected BuildSideFaces(shapePts2d: Vector2[], pathPts2d: Vector2[], pathPts: Vector3[], verts: Vector3[][]): void;
protected BuildLid(shapePts2d: Vector2[], verts: Vector3[][]): void;
}
/**
* 将轮廓变换到`路径上某个点`.
@@ -28,4 +44,20 @@ export declare class SweepGeometry extends Geometry {
* @returns 变换后的轮廓点表
*/
export declare function ProjectionToPlane(contourPts: Vector3[], normal: Vector3, curP: Vector3, preP?: Vector3, nextP?: Vector3): Vector3[];
type Polygon = number[];
export declare class SweepGeometrySimple extends SweepGeometry {
SidePolygons: (Polygon[])[];
private _curSidePolygons;
private _curDir;
TriFaces: (number[])[];
shapeVerts: Vector3[][];
shapePts2d: Vector2[];
computeVertexNormals(): void;
computeFaceNormals(): void;
BuildFace4(a: number, b: number, c: number, d: number, uvs: Vector2[], materialIndex?: number): void;
protected SideStartMark(dir: Vector3): void;
protected BuildSideFaces(shapePts2d: Vector2[], pathPts2d: Vector2[], pathPts: Vector3[], verts: Vector3[][]): void;
protected BuildLid(shapePts2d: Vector2[], verts: Vector3[][]): void;
}
export {};
//# sourceMappingURL=SweepGeometry.d.ts.map

View File

@@ -1 +1 @@
{"version":3,"file":"SweepGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/SweepGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiC,QAAQ,EAAsG,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7L,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAK/D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IAEvC,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAC;gBACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE;IAYtF,IAAI,QAAQ,IAAI,YAAY,CAQ3B;IAED,IAAI,QAAQ,mBAGX;IAED,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;IAoDvC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IAyE3C,OAAO,CAAC,cAAc;IAuGtB,OAAO,CAAC,QAAQ;CAkCnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAiCnI"}
{"version":3,"file":"SweepGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/SweepGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiC,QAAQ,EAA6F,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7L,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAK/D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IAEvC,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,cAAc,QAAM;IACpB,qBAAqB,EAAE,MAAM,EAAE,CAAC;gBACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE;IAYtF,IAAI,QAAQ,IAAI,YAAY,CAQ3B;IAED,IAAI,QAAQ,mBAGX;IAED,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;IAoDvC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IAyE3C;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM;IAQvG;;;OAGG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO;IAEpC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAkG5G,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;CAkC/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAiCnI;AAuBD,KAAK,OAAO,GAAG,MAAM,EAAE,CAAC;AAExB,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,OAAO,CAAU;IAEzB,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACvB,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,EAAE,CAAC;IACb,oBAAoB;IACpB,kBAAkB;IAElB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM;cAOnF,aAAa,CAAC,GAAG,EAAE,OAAO;cAS1B,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;cAiBlG,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;CACxE"}