开发更新

This commit is contained in:
ChenX
2024-03-26 10:01:15 +08:00
parent ed08696189
commit 070821c353
498 changed files with 5192 additions and 10640 deletions

View File

@@ -1,27 +0,0 @@
import { Poly3 } from "@jscad/modeling/src/geometries/types";
import { Vector3 } from "three";
import { Geom3Res } from "../Common/CSGIntersect";
/**
* 解决 THREEBSP(CSG) 产生的结果没有办法得到分裂的个数.
* 本类分析了THREEBSP的组合情况.
*
* Example:
*
* let topology = new BSPGroupParse(csg);
* topology.parse();
*/
export declare class BSPGroupParse {
fractionDigits: number;
constructor(bsp?: Geom3Res, fractionDigits?: number);
Add(poly: Poly3): void;
/**
* 返回组合点
*/
Parse(): Vector3[][];
private map;
private Get;
private GetPts;
private vecMap;
private GenerateP;
}
//# sourceMappingURL=BSPGroupParse.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"BSPGroupParse.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BSPGroupParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAEa,cAAc;gBAArC,GAAG,CAAC,EAAE,QAAQ,EAAS,cAAc,SAAI;IAMrD,GAAG,CAAC,IAAI,EAAE,KAAK;IAaf;;OAEG;IACH,KAAK,IAAI,OAAO,EAAE,EAAE;IAoBpB,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,SAAS;CAMpB"}

View File

@@ -1,12 +0,0 @@
import { ExtrudeBufferGeometry, UVGenerator, Vector2 } from "three";
declare class BoardUVGenerator implements UVGenerator {
generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[];
generateSideWallUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number, indexD: number): Vector2[];
}
declare class BoardUVGenerator2 extends BoardUVGenerator {
generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[];
}
export declare let boardUVGenerator: BoardUVGenerator;
export declare let boardUVGenerator2: BoardUVGenerator2;
export {};
//# sourceMappingURL=BoardUVGenerator.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"BoardUVGenerator.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BoardUVGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpE,cAAM,gBAAiB,YAAW,WAAW;IAEzC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAejH,kBAAkB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAoCzI;AAED,cAAM,iBAAkB,SAAQ,gBAAgB;IAE5C,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAepH;AAED,eAAO,IAAI,gBAAgB,kBAAyB,CAAC;AACrD,eAAO,IAAI,iBAAiB,mBAA0B,CAAC"}

View File

@@ -1,25 +0,0 @@
import { Box3 } from 'three';
/**
* 盒子的切割类型
*/
export declare enum SplitType {
X = 0,
Y = 1,
Z = 2
}
/**
* 扩展Box3,添加切割方法,体积等
*/
export declare class Box3Ext extends Box3 {
TempData: any;
get Volume(): number;
isSolid(minSize?: number): boolean;
substract(b: Box3Ext, spaceType: SplitType): Box3Ext[];
clampSpace(b2: Box3Ext, splitType: SplitType): this;
intersectsBox(box: Box3, fuzz?: number): boolean;
}
export declare function IntersectsBox(box1: Box3, box2: Box3, fuzz?: number): boolean;
/**盒子二维面是否相交 */
export declare function IntersectBox2(box1: Box3, box2: Box3, fuzz?: number): boolean;
export declare function BoxIsSolid(box: Box3, minSize?: number): boolean;
//# sourceMappingURL=Box.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAW,MAAM,OAAO,CAAC;AAEtC;;GAEG;AACH,oBAAY,SAAS;IAEjB,CAAC,IAAI;IACL,CAAC,IAAI;IACL,CAAC,IAAI;CACR;AAED;;GAEG;AACH,qBAAa,OAAQ,SAAQ,IAAI;IAE7B,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,MAAM,WAIT;IAGD,OAAO,CAAC,OAAO,SAAI;IAInB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAiB1C,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAS5C,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,SAAO,GAAG,OAAO;CAIjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAO,GAAG,OAAO,CAK1E;AAED,eAAe;AACf,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAO,WAIhE;AAGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,SAAI,WAIhD"}

View File

@@ -1,16 +0,0 @@
import { BufferAttribute, BufferGeometry, ShapeGeometry, Vector3 } from "three";
export declare namespace BufferGeometryUtils {
function CreateFromPts(pts: Vector3[]): BufferGeometry;
/**
* 更新BufferGeometry的顶点
* @param geo
* @param pts
* @param ignoreBoxError 忽略更新点后盒子错误的问题
* @returns 当成功时返回true,更新失败时返回false
*/
function UpdatePts(geo: BufferGeometry, pts: Vector3[], ignoreBoxError?: boolean): boolean;
function ArrowGeometry(): ShapeGeometry;
function MergeBufferGeometries(geometries: BufferGeometry[], useGroups?: boolean): BufferGeometry;
function MergeBufferAttributes(attributes: BufferAttribute[]): BufferAttribute;
}
//# sourceMappingURL=BufferGeometryUtils.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"BufferGeometryUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BufferGeometryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAS,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGvF,yBAAiB,mBAAmB,CACpC;IACI,SAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,cAAc,CAG5D;IAED;;;;;;OAMG;IACH,SAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,UAAQ,GAAG,OAAO,CAgB9F;IAGD,SAAgB,aAAa,kBAa5B;IAED,SAAgB,qBAAqB,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,SAAS,GAAE,OAAe,GAAG,cAAc,CAyK9G;IAED,SAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,CAuCpF;CAEJ"}

View File

@@ -1,11 +0,0 @@
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

@@ -1 +0,0 @@
{"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

@@ -1,19 +0,0 @@
import { Box2 } from "three";
export interface Vec2 {
x: number;
y: number;
}
/**
* 盒子相交测试,快速判断盒子和直线或者圆是否有相交
*/
export declare class BoxCheckIntersect {
p1: Vec2;
p2: Vec2;
p3: Vec2;
p4: Vec2;
box: Box2;
constructor(box: Box2);
IsIntersectLine(p1: Vec2, p2: Vec2): boolean;
IsIntersectCircle(cen: Vec2, radius: number): boolean;
}
//# sourceMappingURL=CheckIntersect.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"CheckIntersect.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CheckIntersect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,OAAO,CAAC;AAWjD,MAAM,WAAW,IAAI;IAEjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAwBD;;GAEG;AACH,qBAAa,iBAAiB;IAE1B,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,GAAG,EAAE,IAAI,CAAC;gBACE,GAAG,EAAE,IAAI;IAWrB,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO;IAyB5C,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAMxD"}

View File

@@ -1,12 +0,0 @@
import { Circle } from "../DatabaseServices/Entity/Circle";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
import { IContourData } from "../Production/Convert2PtsBul";
/**
* 转换成多段线点表,并且将圆弧打断(大于1/4的话) API仅用于开料生产
* @param cu 多段线或者圆弧
* @param [isOutline=true] 如果为外部轮廓,则将其转换为逆时针
* @param [isSplite=true] 如果为true,则对大圆弧进行切割
* @returns 点表+凸度表
*/
export declare function ConverToPolylineAndSplitArc(cu: Polyline | Circle, isOutline?: boolean, isSplite?: boolean): IContourData;
//# sourceMappingURL=ConverToPolylineAndSplitArc.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"ConverToPolylineAndSplitArc.d.ts","sourceRoot":"","sources":["../../../src/Geometry/ConverToPolylineAndSplitArc.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,EAAE,SAAS,UAAO,EAAE,QAAQ,UAAO,GAAG,YAAY,CA8BlH"}

View File

@@ -1,18 +0,0 @@
import { Matrix4, Vector3 } from 'three';
/**
* 坐标系运算.
*/
export declare class CoordinateSystem {
Postion: Vector3;
XAxis: Vector3;
YAxis: Vector3;
ZAxis: Vector3;
constructor(postion?: Vector3, xAxis?: Vector3, yAxis?: Vector3, zAxis?: Vector3);
applyMatrix4(mat4: Matrix4): this;
getMatrix4(m?: Matrix4): Matrix4;
CopyForm(mat4: Matrix4): this;
extractBasis(xAxisA: Vector3, yAxisA: Vector3, zAxisA: Vector3): void;
copy(cs: CoordinateSystem): CoordinateSystem;
clone(): CoordinateSystem;
}
//# sourceMappingURL=CoordinateSystem.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"CoordinateSystem.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CoordinateSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;gBAEH,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO;IAQhF,YAAY,CAAC,IAAI,EAAE,OAAO;IAU1B,UAAU,CAAC,CAAC,UAAc,GAAG,OAAO;IAMpC,QAAQ,CAAC,IAAI,EAAE,OAAO;IAOtB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAM9D,IAAI,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQ5C,KAAK;CASR"}

View File

@@ -1,14 +0,0 @@
/**
* 一个简单的计数器实现,本质是使用一个Map来保存元素的个数
*
* 例:
* let count = new Count();
* count.AddCount("Test", 1);
* count.GetCount("Test");//现在 Test 的个数为1
*/
export declare class Count {
private m_CountMap;
GetCount(obj: any): number;
AddCount(obj: any, add: number): void;
}
//# sourceMappingURL=Count.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Count.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Count.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,qBAAa,KAAK;IAEd,OAAO,CAAC,UAAU,CAA8B;IAChD,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAU1B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM;CAIjC"}

View File

@@ -1,8 +0,0 @@
import { Contour } from "../DatabaseServices/Contour";
import { Curve } from "../DatabaseServices/Entity/Curve";
/**
* 某些时候我们不能创建轮廓,此时我们使用类似c2r的方法来构建一个外部轮廓.
*/
export declare function CreateContours(curves: Curve[], fuzz?: number): Contour[];
export declare function CreateContour2(curves: Curve[], fuzz?: number): Contour | undefined;
//# sourceMappingURL=CreateContour2.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"CreateContour2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreateContour2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAQzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,SAAO,GAAG,OAAO,EAAE,CAgHtE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,SAAO,GAAG,OAAO,GAAG,SAAS,CAGhF"}

View File

@@ -1,5 +0,0 @@
import { Vector2 } from 'three';
import { Shape2 } from '../DatabaseServices/Shape2';
export declare function CreatePolylinePath(pts: Vector2[], buls: number[]): Shape2;
export declare function CreateShapeFromPoints(): void;
//# sourceMappingURL=CreatePolylinePath.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"CreatePolylinePath.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreatePolylinePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgCpD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CA0BzE;AAED,wBAAgB,qBAAqB,SAGpC"}

View File

@@ -1,11 +0,0 @@
import { BufferGeometry, Line, LineBasicMaterial, Matrix4, Object3D } from "three";
import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole";
import { Board } from "../DatabaseServices/Entity/Board";
import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude";
import { Shape2 } from "../DatabaseServices/Shape2";
export declare function CreateWireframe(en3D: Board | ExtrudeSolid): Object3D[];
export declare function FastWireframe(br: ExtrudeSolid, color?: number, divCount?: number, optArc?: boolean): Line<BufferGeometry, LineBasicMaterial>[];
export declare function FastExtrudeEdgeGeometryOfShape(shape: Shape2, z0: number, z1: number, divCount?: number, optArc?: boolean, coords?: number[]): number[];
export declare function FastExtrudeEdgeGeometry(ext: ExtrudeSolid, color?: number, divCount?: number, optArc?: boolean, coords?: number[], inv?: Matrix4): number[];
export declare function FastWireframe2(dr: ExtrudeHole, color?: number): Line<BufferGeometry, LineBasicMaterial>[];
//# sourceMappingURL=CreateWireframe.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"CreateWireframe.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreateWireframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoC,IAAI,EAAE,iBAAiB,EAAgB,OAAO,EAAE,QAAQ,EAAW,MAAM,OAAO,CAAC;AAI5I,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIpD,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,cAsEzD;AAaD,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAI,EAAE,MAAM,UAAO,GAAG,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,CAkDjI;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,MAAM,UAAO,EAAE,MAAM,GAAE,MAAM,EAAO,YAqBvI;AAID,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAI,EAAE,MAAM,UAAO,EAAE,MAAM,GAAE,MAAM,EAAO,EAAE,GAAG,GAAE,OAAmB,YAmDjJ;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,SAAI,6CAoCxD"}

View File

@@ -1,33 +0,0 @@
import { Box3, Vector3 } from "three";
import { Curve } from "../DatabaseServices/Entity/Curve";
import { IntersectOption } from "../GraphicsSystem/IntersectWith";
/**
* 简化优化版本的曲线求交, 优化版本可以参考(算法导论33.2 确定任意一对线段是否相交 p599)
*/
export declare class CurveIntersection {
protected fuzz: number;
protected boxMap: Map<Curve, Box3>;
/**
* 交点数据集,key 为曲线 value 为和它相交的(曲线和交点的Map)
*/
intersect: Map<Curve, Map<Curve, Vector3[]>>;
intersect2: Map<Curve, [number, Vector3][]>;
intersect3: [Curve, Curve, Vector3[]][];
/**
* @param {Curve[]} cus 请注意数组的顺序会被更改,如果你在意数组的顺序,请拷贝数组后传进来
* @memberof CurveIntersection
*/
constructor(cus: Curve[], parseIntersectionParam?: boolean, intType?: IntersectOption, fuzz?: number, parseRecord?: boolean);
protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption): import("../GraphicsSystem/IntersectWith").IntersectResult[];
protected AppendIntersectionParams(curve: Curve, params: [number, Vector3][]): void;
protected GenBox(cus: Curve[]): void;
protected SortCurve(cus: Curve[]): void;
GetIntersect(cu: Curve): Map<Curve, Vector3[]>;
}
export declare class CurveIntersection2 extends CurveIntersection {
/**
* Curve2Polyline使用这个时,为了避免多余的交点导致曲线切割过度,过滤掉无关的点
*/
protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption): import("../GraphicsSystem/IntersectWith").IntersectResult[];
}
//# sourceMappingURL=CurveIntersection.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"CurveIntersection.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CurveIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;GAEG;AACH,qBAAa,iBAAiB;IAkBsE,SAAS,CAAC,IAAI;IAf9G,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAa;IAE/C;;OAEG;IACH,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAa;IAEzD,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAa;IAExD,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAM;IAE7C;;;OAGG;gBACS,GAAG,EAAE,KAAK,EAAE,EAAE,sBAAsB,UAAQ,EAAE,OAAO,kBAA6B,EAAY,IAAI,SAAO,EAAE,WAAW,UAAQ;IA6C1I,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;IAKvE,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAW5E,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;IAM7B,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;IAQhC,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;CASjD;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;IAErD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;CAW1E"}

View File

@@ -1,51 +0,0 @@
import { Vector3 } from "three";
import { Curve } from "../DatabaseServices/Entity/Curve";
export interface Vertice {
position: Vector3;
routes: Route[];
}
export interface Route {
curve: Curve;
from: Vertice;
to: Vertice;
length: number;
isReverse: boolean;
an?: number;
s: Vector3;
e: Vector3;
}
/**
* 曲线连接图
* 所有的顶点和边的关系
*/
export declare class CurveMap {
numdimensions: number;
_RemoveSortLine: boolean;
private multiplier;
constructor(numdimensions?: number, _RemoveSortLine?: boolean, multiplier?: number);
_VerticeMap: Map<Vector3, Vertice>;
_Vertices: Vertice[];
/**
* 得到节点图的所有站点列表
*/
get Stands(): Vertice[];
/**
* @param curve
* @param [isArc=curve instanceof Arc]
* @param [removeDuplicate=false]
* @returns 加入成功?
*/
AddCurveToMap(curve: Curve, isArc?: boolean, removeDuplicate?: boolean, parseAngle?: boolean): boolean;
/**
* 获得唯一的顶点
*/
GetOnlyVertice(p: Vector3): Vertice;
_LookupTable: {
[key: string]: Vector3;
};
/**
* 生成一个唯一的向量.
*/
GenerateP(p: Vector3): Vector3;
}
//# sourceMappingURL=CurveMap.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"CurveMap.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CurveMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAIzD,MAAM,WAAW,OAAO;IAGpB,QAAQ,EAAE,OAAO,CAAC;IAElB,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAGD,MAAM,WAAW,KAAK;IAElB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,QAAQ;IAGN,aAAa;IACb,eAAe;IACtB,OAAO,CAAC,UAAU;gBAFX,aAAa,SAAI,EACjB,eAAe,UAAQ,EACtB,UAAU,SAAsB;IAQ5C,WAAW,wBAA+B;IAE1C,SAAS,EAAE,OAAO,EAAE,CAAM;IAE1B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,EAAE,CAGtB;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,OAA8B,EAAE,eAAe,GAAE,OAAe,EAAE,UAAU,UAAQ,GAAG,OAAO;IA2CjI;;MAEE;IACF,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAYnC,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAAE,CAAM;IAE/C;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;CAmCjC"}

View File

@@ -1,7 +0,0 @@
import { Vec2 } from "./CheckIntersect";
export declare function orientation(p: Vec2, q: Vec2, r: Vec2): number;
/**
* 判断线段`p1q1`和线段`p2q2`是否相交.
*/
export declare function doIntersect(p1: Vec2, q1: Vec2, p2: Vec2, q2: Vec2): boolean;
//# sourceMappingURL=DoIntersect.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"DoIntersect.d.ts","sourceRoot":"","sources":["../../../src/Geometry/DoIntersect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAoBxC,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAS7D;AACD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAyB3E"}

View File

@@ -1,22 +0,0 @@
import { Matrix4 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Curve } from "../../DatabaseServices/Entity/Curve";
import { Face } from "./Face";
export declare const CanDrawHoleFuzz = 0.1;
export declare enum BoardFaceType {
Side = 0,
NoSide = 1
}
export declare class BoardGetFace {
Board: Board;
Faces: Face[];
constructor(Board: Board);
ParseFaces(): void;
GetTopAndBottomFace(isEdgeFace?: boolean): void;
GetSideFaces(): void;
IntersectFace(br: BoardGetFace, bInsEqual?: boolean): Face[];
static GetAllSidesFaces(br: Board, isMergeFace?: boolean): Face[];
}
export declare function MatrixIsCoplane2(matrixFrom: Matrix4, matrixTo: Matrix4, zFuzz: number): boolean;
export declare function GetSideFaceMtx(cu: Curve, inverseZ?: boolean): Matrix4;
//# sourceMappingURL=BoardGetFace.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"BoardGetFace.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/BoardGetFace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAKzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,oBAAY,aAAa;IAErB,IAAI,IAAI;IACR,MAAM,IAAI;CACb;AACD,qBAAa,YAAY;IAGF,KAAK,EAAE,KAAK;IAD/B,KAAK,EAAE,IAAI,EAAE,CAAM;gBACA,KAAK,EAAE,KAAK;IAI/B,UAAU;IAOV,mBAAmB,CAAC,UAAU,UAAQ;IAqCtC,YAAY;IA0BZ,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI,EAAE;IAqBnE,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,UAAQ;CAwBzD;AAGD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAe/F;AACD,wBAAgB,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAmBnE"}

View File

@@ -1,36 +0,0 @@
import { Box3, Matrix4, Vector3 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Region } from "../../DatabaseServices/Entity/Region";
import { BoardFaceType } from "./BoardGetFace";
export interface BoardFaceParams {
type: BoardFaceType;
length: number;
width: number;
localBoard: Board;
matrix4: Matrix4;
region?: Region;
isRect?: boolean;
drillType?: string;
}
export declare class Face {
type: BoardFaceType;
Length: number;
Width: number;
private _Region;
LocalBoard: Board;
InterBoard: Board;
isEqualType: boolean;
OCS: Matrix4;
IsRect: boolean;
DrillType: string;
constructor(parameters?: BoardFaceParams);
get Region(): Region;
get OCSInv(): Matrix4;
get Normal(): Vector3;
Intersect(f: Face): Face[];
IsIntersect(f: Face, fuzz?: number, currentCoverBoxes?: Box3[]): {
isInt: boolean;
coverBoxesList?: Box3[];
};
}
//# sourceMappingURL=Face.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Face.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/Face.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAI9D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAE5B,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,qBAAa,IAAI;IAEb,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,OAAO,CAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,OAAO,CAAS;IAC7B,GAAG,EAAE,OAAO,CAAiB;IAC7B,MAAM,EAAE,OAAO,CAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;gBACN,UAAU,CAAC,EAAE,eAAe;IAkBxC,IAAI,MAAM,WAKT;IACD,IAAI,MAAM,YAGT;IACD,IAAI,MAAM,YAGT;IACD,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE;IAsF1B,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAO,EAAE,iBAAiB,GAAE,IAAI,EAAO,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;KAAE;CAwHlH"}

View File

@@ -1,14 +0,0 @@
import { BufferGeometry } from "three";
import { Geom3Res, PolygonRes } from "../Common/CSGIntersect";
export declare class EdgesGeometry extends BufferGeometry {
/**
* 在使用Extrude实体的时候,有可能导致面无限分裂,并且有可能造成丢线问题,使用FromCSG方法可解.
*/
FromGeometry(geometry: any, thresholdAngle?: number): this;
/**
* 解决原来算法性能低下并且结果不理想的问题
*/
FromCSG(csg: Geom3Res): this;
PolygonsOutline(polygons: PolygonRes[], coords: number[]): void;
}
//# sourceMappingURL=EdgeGeometry.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"EdgeGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/EdgeGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAqE,MAAM,OAAO,CAAC;AAEhH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAS9D,qBAAa,aAAc,SAAQ,cAAc;IAE7C;;OAEG;IACH,YAAY,CAAC,QAAQ,KAAA,EAAE,cAAc,GAAE,MAAU;IA8GjD;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,QAAQ;IA8BrB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;CAwF3D"}

View File

@@ -1,177 +0,0 @@
import { Box3, BufferGeometry, Vector3 } from "three";
import { Contour } from "../../DatabaseServices/Contour";
import { ExtrudeContourCurve, ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { Line } from "../../DatabaseServices/Entity/Line";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
export declare enum DepthType {
Front = 1,
Back = 2,
All = 3
}
export declare const ExtrudeBuildConfig: {
bevel: boolean;
};
/**
* 槽的几何数据,包括槽的墙面和槽的盖子
*/
export declare class Groove {
depthType: DepthType;
depth: number;
allDepth: number;
private box;
contourWall: ExtudeWall;
holeWalls: ExtudeWall[];
private lid;
constructor(contour: Contour, holes: Contour[], depthType: DepthType, depth: number, allDepth: number, box?: import("../Box").Box3Ext);
/**
* @param groove this - groove
* @param [eachOther=true] 相互裁剪
*/
ClipTo(groove: Groove, eachOther?: boolean): void;
private ClipLid;
Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild, rotateUv: boolean): void;
}
declare enum DirectionType {
Outer = 0,
Inner = 1
}
export declare class ContourTreeNode {
contour: Contour;
children: ContourTreeNode[];
parent: ContourTreeNode;
box: Box3;
area: number;
constructor(contour: Contour, children?: ContourTreeNode[]);
SetParent(node: ContourTreeNode): void;
get Depth(): number;
get IsHole(): boolean;
Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number): void;
static ParseContourTree(contourNodes: ContourTreeNode[]): void;
}
declare class EdgeGeometryBuild {
allDepth: number;
lineVerticesArray: number[];
frontLines: Line[];
backLines: Line[];
constructor(allDepth: number);
AddLidLine(p1: Vector3, p2: Vector3, depth: number): void;
BuildLid(verticesArray: number[], uvArray: number[], rotateUv: boolean): void;
}
/**
* 胶带
*/
export declare class Tape {
start: number;
end: number;
bottom: number;
top: number;
constructor(start: number, end: number, bottom: number, top: number);
get Curve(): Polyline;
Clip(t: this): Tape[];
Split(xlst: number[]): Tape[];
}
/**
* 二维形状,内部用曲线胶带表示(用来计算盖子差集算法)
*/
export declare class CurveTapeShape {
children: CurveTapeShape[];
contour: CurveTape;
holes: CurveTape[];
constructor(contour: Contour, holes: Contour[]);
CloneNew(): CurveTapeShape;
/**
* 删除包含,同向
*/
ClipTo(s: CurveTapeShape, append?: boolean): void;
SplitTo(s: CurveTapeShape): void;
/**
* 只保留被包含部分
*/
private ReverseClipTo;
ChildrenClip(): void;
Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number): void;
}
/**
* 曲线胶带(一维)
*/
declare class CurveTape {
contour: Contour;
wallType: DirectionType;
tapes: Range[];
splitParams: number[];
constructor(contour: Contour, wallType: DirectionType);
get Curves(): Polyline[];
/**
* 分析与另一个形状的包含关系
*/
Parse(s: CurveTapeShape): CurveParamRangeRelation;
/**
* 删除包含,同向面
*/
ClipTo(s: CurveTapeShape): this;
/**
* 保留被包含的部分
*/
ReverseClipTo(s: CurveTapeShape): this;
}
declare class ExtudeWall {
curve: ExtrudeContourCurve;
depthType: DepthType;
depth: number;
allDepth: number;
wallType: DirectionType;
private Tape;
constructor(curve: ExtrudeContourCurve, depthType: DepthType, depth: number, allDepth: number, wallType: DirectionType);
/**
* 减去在另一个groove内的部分
* @param groove this - groove
* @param [clipSyntropy=false] 删除同向的面
*/
ClipTo(groove: Groove, clipSyntropy?: boolean): void;
ClipReverse(wall: this): void;
/**
* 当起始参数大于终止参数时,裁剪的区域经过终点
*
* @param startParam 起始参数
* @param endParam 终止参数
* @param faceType 裁剪面朝向
* @param depth 裁剪面的深度
*/
ClipFromParam(startParam: number, endParam: number, faceType: DepthType, depth: number): this;
Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild): void;
}
/**
* 曲线参数范围关系(包含,分离,同向共线,反向共线)
* 用来表示某一曲线在另一个曲线内的关系
*/
interface CurveParamRangeRelation {
outer: Range[];
container: Range[];
syntropy: Range[];
reverse: Range[];
}
/**
*
* @param orgStart 被裁剪范围的起点(如果起点大于终点,那么表示 s->end + 0->e)
* @param orgEnd
* @param clipStart
* @param clipEnd
* @param end
* @returns
*/
export declare function SubtractRange(orgStart: number, orgEnd: number, clipStart: number, clipEnd: number, end: number): Range[];
export declare function SubtractRange2(r: Range, sr: Range, end: number): Range[];
type Range = [number, number];
export declare class ExtrudeGeometryBuilder {
private br;
verticesArray: number[];
uvArray: number[];
edgeAndLidBuilder: EdgeGeometryBuild;
constructor(br: ExtrudeSolid, rotateUv?: boolean);
protected GenerateMeshData(br: ExtrudeSolid, rotateUv: boolean): void;
get MeshGeometry(): BufferGeometry;
get EdgeGeometry(): BufferGeometry;
protected ParseGrooves(): Groove[];
}
export {};
//# sourceMappingURL=ExtrudeEdgeGeometry2.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"ExtrudeEdgeGeometry2.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/ExtrudeMeshGeomBuilder/ExtrudeEdgeGeometry2.ts"],"names":[],"mappings":"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"}

View File

@@ -1,19 +0,0 @@
import { Vector3 } from "three";
import { Arc } from "../../DatabaseServices/Entity/Arc";
import { Circle } from "../../DatabaseServices/Entity/Circle";
import { ExtrudeContourCurve } from "../../DatabaseServices/Entity/Extrude";
export declare const ARC_DRAW_CONFIG: {
ARC_SplitLength: number;
ARC_RADIUS_MIN: number;
Arc_MinSplitCount: number;
ARC_MaxSplitCount: number;
};
export declare function GetArcDrawCount(arc: Arc | Circle | number): number;
/**
*
* @param cu
*/
export declare function SplitCurveParams(cu: ExtrudeContourCurve): number[];
export declare function SplitCurvePoints(cu: ExtrudeContourCurve): Vector3[];
export declare function SplitArcParams(arc: Arc): number[];
//# sourceMappingURL=SplitCurveParams.d.ts.map

View File

@@ -1 +0,0 @@
{"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,10 +0,0 @@
import { Vector3 } from "three";
/**
* 快速的对点表进行偏移
* @param contour
* @param [offsetDist=1]
* @param [ignoreSpike=true] 忽略尖角优化(如果不忽略,那么尖角将会变钝(有点奇怪))
* @returns 偏移后的点表
*/
export declare function FastOffset(contour: Vector3[], offsetDist?: number, ignoreSpike?: boolean): Vector3[];
//# sourceMappingURL=FastOffset.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"FastOffset.d.ts","sourceRoot":"","sources":["../../../src/Geometry/FastOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,MAAM,OAAO,CAAC;AAI/C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,SAAI,EAAE,WAAW,UAAO,GAAG,OAAO,EAAE,CAY5F"}

View File

@@ -1,128 +0,0 @@
import { Box3, BufferGeometry, Geometry, Line, Matrix4, Mesh, Object3D, Vector, Vector2, Vector3 } from 'three';
import { Vec3 } from './IVec3';
export declare const IdentityMtx4: Matrix4;
export declare const ZeroVec: Vector3;
export declare const XAxis: Vector3;
export declare const XAxisN: Vector3;
export declare const YAxis: Vector3;
export declare const YAxisN: Vector3;
export declare const ZAxis: Vector3;
export declare const ZAxisN: Vector3;
export declare function AsVector2(p: {
x: number;
y: number;
}): Vector2;
export declare function AsVector3(p: {
x: number;
y: number;
z?: number;
}): Vector3;
/**
* 判断一维线段a和b是否存在交集
*/
export declare function isIntersect(amin: number, amax: number, bmin: number, bmax: number, eps?: number): boolean;
export declare function isIntersect2(a1: number, a2: number, b1: number, b2: number, eps?: number): boolean;
/**
* 旋转一个点,旋转中心在原点
* @param {Vector3} p 点
* @param {number} a 角度.
* @returns {Vector3} 返回pt不拷贝.
*/
export declare function rotatePoint(p: Vector3, a: number): Vector3;
export declare function equaln(v1: number, v2: number, fuzz?: number): boolean;
export declare function equalnn(dis?: number): (v1: number, v2: number) => boolean;
interface P2 {
x: number;
y: number;
}
export declare function equalv3(v1: Vec3, v2: Vec3, fuzz?: number): boolean;
export declare function equalv2(v1: P2, v2: P2, fuzz?: number): boolean;
/**
* 按照极坐标的方式移动一个点
* @param {T} v 向量(2d,3d)
* @param {number} an 角度
* @param {number} dis 距离
* @returns {T}
*/
export declare function polar<T extends Vector2 | Vector3>(v: T, an: number, dis: number): T;
export declare function angle(v: Vector3 | Vector2): number;
/**
* 求两个向量的夹角,顺时针为负,逆时针为正
* @param {Vector3} v1
* @param {Vector3} v2
* @param {Vector3} [ref] 参考向量,如果为世界坐标系则为0,0,1
*/
export declare function angleTo(v1: Vector3, v2: Vector3, ref?: Vector3): number;
export declare function getLoocAtUpVec(dir: Vector3): Vector3;
export declare function createLookAtMat4(dir: Vector3): Matrix4;
/**
* 判断2个向量是不是平行,尽量传入单位向量,才能保证计算精度
*/
export declare function isParallelTo(v1: Vector3, v2: Vector3, fuzz?: number): boolean;
/**
* 垂直向量
*/
export declare function isPerpendicularityTo(v1: Vector3, v2: Vector3, fuzz?: number): boolean;
export declare function ptToString(v: Vector3, fractionDigits?: number): string;
export declare function midPoint(v1: Vector3, v2: Vector3): Vector3;
export declare function midPoint2(v1: Vector2, v2: Vector2): Vector2;
/**
* 获得Three对象的包围盒.
* @param obj
* @param [updateMatrix] 是否应该更新对象矩阵
* @returns box
*/
export declare function GetBox(obj: Object3D, updateMatrix?: boolean): Box3;
export declare function GetBoxArr(arr: Array<Object3D>): Box3;
export declare function MoveMatrix(v: Vector3): Matrix4;
export declare function getPtPostion(sp: Vector3, ep: Vector3, c: Vector3, inPt: Vector3): {
sp: Vector3;
ep: Vector3;
};
export declare function angleAndX(v: Vector3 | Vector2): number;
/**
* 将角度调整为0-2pi之间
*/
export declare function clampRad(an: number): number;
export declare function updateGeometry(l: Line | Mesh, geometry: Geometry | BufferGeometry): void;
export declare function UpdateBoundingSphere(obj: Object3D): void;
export type compareVectorFn = (v1: Vector, v2: Vector) => number;
/**
* 构建返回一个用来排序的函数.根据key创建排序规则.
*
* 当key = "xyz" 时,点集按 x从小到大,y从小到大 z从小到大
* key = "X" 时,点集按 x从大到小
* 以此类推.
*
* 例子:
* let pts:Vector3[] =...;
* pts.sort(comparePoint("x")); //x从小到大排序
* pts.sort(comparePoint("zX")); //z从小到大 x从大到小
*
* @export
* @param {string} sortKey
* @returns {compareVectorFn}
*/
export declare function ComparePointFnGenerate(sortKey: string, fuzz?: number): compareVectorFn;
/**
*计算各轴旋转角度
*/
export declare function GetEulerAngle(x: Vector3, y: Vector3, z: Vector3): {
roX: number;
roY: number;
roZ: number;
};
/**
* 方形框捕捉
* @param sqCenter 正方形点
* @param snapPt 被捕捉的点
* @param size 捕捉框大小
*/
export declare function SnapPoint(sqCenter: Vector3, snapPt: Vector3, size: number): boolean;
export declare function SelectNearP(pts: Vector3[], refPt: Vector3): Vector3;
/**n是否在AB之间,fuzz 若为负的,允许相等 */
export declare function IsBetweenA2B(n: number, A: number, B: number, fuzz?: number): boolean;
/** 矩阵是世界坐标系 */
export declare function MatrixIsIdentityCS(mtx: Matrix4): boolean;
export {};
//# sourceMappingURL=GeUtils.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GeUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/GeUtils.ts"],"names":[],"mappings":"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"}

View File

@@ -1,6 +0,0 @@
export interface Vec3 {
x: number;
y: number;
z: number;
}
//# sourceMappingURL=IVec3.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"IVec3.d.ts","sourceRoot":"","sources":["../../../src/Geometry/IVec3.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IAEjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb"}

View File

@@ -1,10 +0,0 @@
import { Matrix4, Vector2, Vector3 } from "three";
export declare class Matrix2 {
el: number[];
set(ix: number, iy: number, jx: number, jy: number): this;
applyVector(vec: Vector2 | Vector3): this;
fromMatrix4(mtx4: Matrix4): void;
setRotate(theta: number): this;
invert(): this;
}
//# sourceMappingURL=Matrix2.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Matrix2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Matrix2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAElD,qBAAa,OAAO;IAGhB,EAAE,WAAgB;IAElB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAUlD,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAUlC,WAAW,CAAC,IAAI,EAAE,OAAO;IAOzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS9B,MAAM,IAAI,IAAI;CAUjB"}

View File

@@ -1,10 +0,0 @@
import { Vector3, Matrix4 } from 'three';
export declare class OBB {
ocs: Matrix4;
halfSizes: Vector3;
_EPSILON: number;
center: Vector3;
constructor(ocs: Matrix4, halfSizes: Vector3);
intersectsOBB(obb: OBB, is2D?: boolean, ucsInv?: Matrix4): boolean;
}
//# sourceMappingURL=obb.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"obb.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/OBB/obb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAWzC,qBAAa,GAAG;IAMO,GAAG,EAAE,OAAO;IAAS,SAAS,EAAE,OAAO;IAJ1D,QAAQ,SAAQ;IAET,MAAM,EAAE,OAAO,CAAC;gBAEJ,GAAG,EAAE,OAAO,EAAS,SAAS,EAAE,OAAO;IAK1D,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;CAkOrE"}

View File

@@ -1,28 +0,0 @@
import { Vector3 } from "three";
/**
* 轨道控制的数学类,观察向量和角度的互相转换
* 当x当抬头或者低头到90度时,触发万向锁.
*/
export declare class Orbit {
private phi;
theta: number;
get RoX(): number;
set RoX(v: number);
/**
* 使用旋转角度 计算观察向量
* @param [outDirection] 引用传入,如果传入,那么就不构造新的向量
* @returns 返回观察向量
*/
UpdateDirection(outDirection?: Vector3): Vector3;
/**
* 使用观察向量,计算旋转角度
* @param dir 这个向量会被修改成单位向量.
*/
SetFromDirection(dir: Vector3): void;
/**
* 参考任意轴坐标系算法.
* http://help.autodesk.com/view/ACD/2017/CHS/?guid=GUID-E19E5B42-0CC7-4EBA-B29F-5E1D595149EE
*/
static ComputUpDirection(n: Vector3, ay?: Vector3, ax?: Vector3): Vector3;
}
//# sourceMappingURL=Orbit.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Orbit.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Orbit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,OAAO,CAAC;AAG3C;;;GAGG;AACH,qBAAa,KAAK;IAGd,OAAO,CAAC,GAAG,CAAa;IAGxB,KAAK,EAAE,MAAM,CAAK;IAElB,IAAI,GAAG,WAGN;IACD,IAAI,GAAG,CAAC,CAAC,QAAA,EAGR;IAED;;;;OAIG;IACH,eAAe,CAAC,YAAY,UAAgB,GAAG,OAAO;IAYtD;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAapC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAE,OAAuB,EAAE,EAAE,GAAE,OAAuB,GAAG,OAAO;CAY1G"}

View File

@@ -1,8 +0,0 @@
import { Line3, Plane, Ray, Vector3 } from "three";
export declare class PlaneExt extends Plane {
constructor(normal?: Vector3, constant?: number | Vector3);
parseConstantFromPoint(constant: Vector3): void;
intersectLine(line: Line3, optionalTarget?: Vector3, extendLine?: boolean): Vector3;
intersectRay(ray: Ray, optionalTarget?: Vector3, extendLine?: boolean): Vector3;
}
//# sourceMappingURL=Plane.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Plane.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEnD,qBAAa,QAAS,SAAQ,KAAK;gBAEnB,MAAM,UAAuB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAStE,sBAAsB,CAAC,QAAQ,EAAE,OAAO;IAKxC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,UAAgB,EAAE,UAAU,UAAQ,GAAG,OAAO;IA4BvF,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO;CAMlF"}

View File

@@ -1,18 +0,0 @@
import { Vector3 } from "three";
import { BoardOpenDir, LinesType } from "../DatabaseServices/Entity/BoardInterface";
export declare class PointShapeUtils {
static SquarePts(size: number): Vector3[];
static OutsideLinePts(squareSize: number, lineLength: number): Vector3[];
static CrossLinePts(lineLength: number): Vector3[];
static CrossLine3DPts(lineLength: number): Vector3[][];
static TrianglePts(size: number): Vector3[];
static CirclePts(size: number): any[];
static ObliqueCrossPts(size: number): Vector3[];
static ObliqueCrossLinePts(size: number): Vector3[];
static SandClockPts(size: number): Vector3[];
static TangentPts(size: number): Vector3[];
static PerPts(size: number): Vector3[];
static LinesDirPts(len: number, width: number, lineType: LinesType): Vector3[];
static LinesOpenDirPts(len: number, width: number, openDir: BoardOpenDir): Vector3[];
}
//# sourceMappingURL=PointShapeUtils.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"PointShapeUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/PointShapeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAEpF,qBAAa,eAAe;IAGxB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAW7B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAmB5D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM;IAUtC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM;IAYxC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;IAU/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAS7B,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM;IAInC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM;IAKvC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM;IAWhC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM;IAa9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAY1B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS;IA2ClE,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;CAgC3E"}

View File

@@ -1,44 +0,0 @@
import { Curve } from "../DatabaseServices/Entity/Curve";
import { Route, Vertice } from "./CurveMap";
type RegionRouteS = (Route[])[];
/**
面域分析,基于最小循环图重新实现的版本,拓展了实现求最大轮廓。
当最大轮廓=最小轮廓时,只绘制最大轮廓(独立轮廓无分裂)。
算法只实现去重模式,业务场景应该没有非去重模式。
如果需要非去重模式那么应该获取到多个CurveMap然后对多个CurveMap进行面域分析得出多个重叠的面域。
*/
export declare class RegionParse {
numDimensions: number;
private removeDuplicate;
RegionsOutline: RegionRouteS;
RegionsInternal: RegionRouteS;
ExpLineMap: Map<Curve, Curve[]>;
private _CurveCount;
/**
* @param cuList 请不要传递圆和椭圆.
* @param [numDimensions=3] 精度:小数点后个数
* @param [removeDuplicate=true] 删除重复(现在必须是true,请不要修改它)
*/
constructor(cuList: Curve[], numDimensions?: number, removeDuplicate?: boolean);
static RegionsIsOverlap(Route: Route[]): boolean;
private RemoveFilamentAt;
private RemoveEdge;
/**
* 找到最下方并且最左边的站 yx
*/
private FindLowerLeftStand;
/**
* 构造路线图. 每个节点对应下一个路口的路线表. 路口表使用逆时针排序,起始角度使用正x轴.
* @returns 所有的顶点
*/
protected GenerateVerticeMap(curveList: Curve[]): Array<Vertice>;
private BreakArc;
/**
* 曲线是否已经被算法使用
*/
GetCueveUsed(cu: Curve): boolean;
}
export declare function CalcRouteAngle(r: Route, length: number): void;
export {};
//# sourceMappingURL=RegionParse.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"RegionParse.d.ts","sourceRoot":"","sources":["../../../src/Geometry/RegionParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAY,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMtD,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AAEhC;;;;;;GAMG;AACH,qBAAa,WAAW;IAiBgB,aAAa;IAAM,OAAO,CAAC,eAAe;IAd9E,cAAc,EAAE,YAAY,CAAM;IAElC,eAAe,EAAE,YAAY,CAAM;IAGnC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAa;IAE5C,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,MAAM,EAAE,KAAK,EAAE,EAAS,aAAa,SAAI,EAAU,eAAe,UAAO;IAiErF,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;IAKtC,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;OAGG;IACH,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAwEhE,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO;CAYnC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAQtD"}

View File

@@ -1,4 +0,0 @@
import { Matrix2 } from './Matrix2';
export declare const ROTATE_MTX2: Matrix2;
export declare function RotateUVs(geo: THREE.Geometry): void;
//# sourceMappingURL=RotateUV.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"RotateUV.d.ts","sourceRoot":"","sources":["../../../src/Geometry/RotateUV.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,WAAW,SAAiC,CAAC;AAC1D,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,QAW5C"}

View File

@@ -1,4 +0,0 @@
import { BufferGeometry, Vector3 } from "three";
export declare function GenerateExtrudeEdgeGeometry(contourPoints: Vector3[][], height: number): BufferGeometry;
export declare function GenerateBoxEdgeGeometry(length: number, width: number, height: number): BufferGeometry;
//# sourceMappingURL=SimpleExtrudeEdgeGeometry.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"SimpleExtrudeEdgeGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/SimpleExtrudeEdgeGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAMhD,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAOtG;AAmBD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAIrG"}

View File

@@ -1,32 +0,0 @@
import { Ray } from "three";
import { PromptDistendResult } from "../../Editor/PromptResult";
import { Box3Ext, SplitType } from "../Box";
import { ISpaceParse } from "./ISpaceParse";
/**
* 夹层空间分析
*/
export declare class ClampSpaceParse extends ISpaceParse {
Parse(): Promise<void>;
/**
* 单板延伸空间的时候的延伸距离
*/
get SignalDist(): number;
protected _signalDist: number;
ParseSignalBoard(): Promise<void>;
GetSignalDist(): Promise<PromptDistendResult>;
SetRay(ray: Ray): void;
SelectBoxRecord: Map<SplitType, number>;
WrapSelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
/**
* virtual (请重载) 当盒子空间被切割时,选择合适的空间
* @param splitBoxs 切割后的盒子(2个)
* @param splitType 切割类型
* @returns box 盒子
*/
SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
/**
*用单块板包围盒切割空间
*/
private SpliteBoxsAndSelect;
}
//# sourceMappingURL=ClampSpaceParse.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"ClampSpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAW,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAe5C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAEtC,KAAK;IAiEX;;OAEG;IACH,IAAI,UAAU,WAGb;IACD,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAExB,gBAAgB;IAuChB,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAQnD,MAAM,CAAC,GAAG,EAAE,GAAG;IAIf,eAAe,yBAAgC;IACzC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjF;;;;;OAKG;IACG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7E;;OAEG;YACW,mBAAmB;CA+CpC"}

View File

@@ -1,10 +0,0 @@
import { ClampSpaceParse } from "./ClampSpaceParse";
import { PromptDistendResult } from "../../Editor/PromptResult";
import { Box3Ext, SplitType } from "../Box";
export declare class ClampSpaceParseFix extends ClampSpaceParse {
set SignalDist(v: number);
get SignalDist(): number;
GetSignalDist(): Promise<PromptDistendResult>;
SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise<Box3Ext>;
}
//# sourceMappingURL=ClampSpaceParseFix.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"ClampSpaceParseFix.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,qBAAa,kBAAmB,SAAQ,eAAe;IAEnD,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,EAGvB;IACD,IAAI,UAAU,IAJI,MAAM,CAOvB;IAGK,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAQ7C,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAKhF"}

View File

@@ -1,62 +0,0 @@
import { Matrix4, Vector3 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { BoardType } from "../../DatabaseServices/Entity/BoardInterface";
import { Box3Ext, SplitType } from "../Box";
import { VisualSpaceBox } from './../../Editor/VisualSpaceBox';
export declare class ISpaceParse {
/**
* 解析空间成功
*/
ParseOK: boolean;
/**
* 空间占地盒子
*/
SpaceBox: Box3Ext;
/**
* 空间盒子所在的位置矩阵
*/
SpaceOCS: Matrix4;
SpaceOCSInv: Matrix4;
/**
* 板件映射表
*/
BoardMap: Map<BoardType, Board[]>;
/**
* 解析空间所用的板件列表
*/
Boards: Board[];
LeftBoard: Board;
RightBoard: Board;
/**
* 动态中,禁止执行二次操作
*/
IsDynamic: Boolean;
/**选到的虚拟空间 */
VisualSpaceBox: VisualSpaceBox;
Rotation: {
x: number;
y: number;
z: number;
};
/**
* # 构造后请手动调用Parse()方法.
* @param boards 板件列表
* @param [spaceOCS] 默认空间矩阵,如果不设置将使用第一块板作为空间矩阵
*/
constructor(boards?: Board[], spaceOCS?: Matrix4);
Parse(): Promise<void>;
get Size(): Vector3;
get DrawCS(): Matrix4;
protected GetBoardInSpaceType(br: Board): BoardType;
/**
* 构造板件类型Map
*/
protected GeneralBoardMap(): void;
/**
* 解析板件的盒子,并且(排序,归并)
* @param boardCol
* @param splitType
*/
protected ParseBoardBox(boardCol: Board[], splitType: SplitType): Box3Ext[];
}
//# sourceMappingURL=ISpaceParse.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"ISpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ISpaceParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qBAAa,WAAW;IAEpB;;OAEG;IACH,OAAO,UAAS;IAEhB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAa;IAE9C;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAS;IAC3B,aAAa;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ;;;;MAAwB;IAEhC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO;IAe1C,KAAK;IAEX,IAAI,IAAI,YAKP;IAED,IAAI,MAAM,IAAI,OAAO,CAOpB;IAED,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,KAAK,GAAG,SAAS;IAenD;;OAEG;IACH,SAAS,CAAC,eAAe;IAmBzB;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;CAmE9E"}

View File

@@ -1,63 +0,0 @@
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";
/**
* 使用轮廓和扫描路径构建扫描几何体,实现衣柜中的顶线或者地脚线之类的实体.
* 该几何体需要轮廓和路径的起始截面垂直,否则构造的实体将会错误.
*/
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;
/**
* 使用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;
}
/**
* 将轮廓变换到`路径上某个点`.
*
* @param {Vector3[]} contourPts 原始的轮廓点(在世界坐标系)
* @param {Vector3} normal 路径法向量
* @param {Vector3} curP 路径上当前点
* @param {Vector3} [preP] 路径的前一个点
* @param {Vector3} [nextP] 路径下一个点
* @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 +0,0 @@
{"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"}

View File

@@ -1,4 +0,0 @@
import { Geometry, Matrix4 } from "three";
export declare function ScaleUV(geo: Geometry, scale?: number): void;
export declare function ScaleUV2(geo: Geometry, ocs: Matrix4, xScale?: number, yScale?: number, isInvert?: boolean): void;
//# sourceMappingURL=UVUtils.d.ts.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"UVUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/UVUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAEnD,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,SAAO,QAYlD;AACD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,SAAO,EAAE,MAAM,SAAO,EAAE,QAAQ,UAAQ,QAwBnG"}