@mlightcad/geometry-engine 3.3.4 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/geometry-engine.umd.cjs +1 -1
- package/lib/geometry/AcGeArea2d.d.ts +0 -4
- package/lib/geometry/AcGeArea2d.d.ts.map +1 -1
- package/lib/geometry/AcGeArea2d.js +2 -16
- package/lib/geometry/AcGeArea2d.js.map +1 -1
- package/lib/geometry/AcGeCircArc3d.d.ts +1 -1
- package/lib/geometry/AcGeCircArc3d.d.ts.map +1 -1
- package/lib/geometry/AcGeCircArc3d.js +4 -4
- package/lib/geometry/AcGeCircArc3d.js.map +1 -1
- package/lib/geometry/AcGeEllipseArc3d.d.ts +1 -3
- package/lib/geometry/AcGeEllipseArc3d.d.ts.map +1 -1
- package/lib/geometry/AcGeEllipseArc3d.js +4 -15
- package/lib/geometry/AcGeEllipseArc3d.js.map +1 -1
- package/lib/geometry/AcGePolyline2d.d.ts +4 -0
- package/lib/geometry/AcGePolyline2d.d.ts.map +1 -1
- package/lib/geometry/AcGePolyline2d.js +14 -0
- package/lib/geometry/AcGePolyline2d.js.map +1 -1
- package/lib/geometry/AcGeSpline3d.d.ts +4 -0
- package/lib/geometry/AcGeSpline3d.d.ts.map +1 -1
- package/lib/geometry/AcGeSpline3d.js +14 -0
- package/lib/geometry/AcGeSpline3d.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/util/AcGePolygonAreaUtil.d.ts +25 -0
- package/lib/util/AcGePolygonAreaUtil.d.ts.map +1 -0
- package/lib/util/AcGePolygonAreaUtil.js +66 -0
- package/lib/util/AcGePolygonAreaUtil.js.map +1 -0
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes the signed area of a 2D polygon using the shoelace formula.
|
|
3
|
+
*/
|
|
4
|
+
export function acGeSignedPolygonArea2d(points) {
|
|
5
|
+
var count = points.length;
|
|
6
|
+
if (count < 3)
|
|
7
|
+
return 0;
|
|
8
|
+
var area = 0;
|
|
9
|
+
for (var i = 0, j = count - 1; i < count; j = i++) {
|
|
10
|
+
var p1 = points[j];
|
|
11
|
+
var p2 = points[i];
|
|
12
|
+
area += p1.x * p2.y - p2.x * p1.y;
|
|
13
|
+
}
|
|
14
|
+
return area * 0.5;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Computes the absolute area of a 2D polygon using the shoelace formula.
|
|
18
|
+
*/
|
|
19
|
+
export function acGePolygonArea2d(points) {
|
|
20
|
+
return Math.abs(acGeSignedPolygonArea2d(points));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Computes the area of a planar 3D polygon using Newell's method.
|
|
24
|
+
*/
|
|
25
|
+
export function acGePolygonArea3d(points) {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
var count = points.length;
|
|
28
|
+
if (count < 3)
|
|
29
|
+
return 0;
|
|
30
|
+
var nx = 0;
|
|
31
|
+
var ny = 0;
|
|
32
|
+
var nz = 0;
|
|
33
|
+
for (var i = 0, j = count - 1; i < count; j = i++) {
|
|
34
|
+
var p1 = points[j];
|
|
35
|
+
var p2 = points[i];
|
|
36
|
+
var x1 = p1.x;
|
|
37
|
+
var y1 = p1.y;
|
|
38
|
+
var z1 = (_a = p1.z) !== null && _a !== void 0 ? _a : 0;
|
|
39
|
+
var x2 = p2.x;
|
|
40
|
+
var y2 = p2.y;
|
|
41
|
+
var z2 = (_b = p2.z) !== null && _b !== void 0 ? _b : 0;
|
|
42
|
+
nx += (z1 + z2) * (y1 - y2);
|
|
43
|
+
ny += (x1 + x2) * (z1 - z2);
|
|
44
|
+
nz += (y1 + y2) * (x1 - x2);
|
|
45
|
+
}
|
|
46
|
+
return 0.5 * Math.hypot(nx, ny, nz);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns the absolute polygon area for a closed loop, or `0` when the loop is
|
|
50
|
+
* open or degenerate.
|
|
51
|
+
*/
|
|
52
|
+
export function acGeClosedPolygonArea2d(points) {
|
|
53
|
+
if (points.length < 3)
|
|
54
|
+
return 0;
|
|
55
|
+
return acGePolygonArea2d(points);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns the absolute polygon area for a closed loop, or `0` when the loop is
|
|
59
|
+
* open or degenerate.
|
|
60
|
+
*/
|
|
61
|
+
export function acGeClosedPolygonArea3d(points) {
|
|
62
|
+
if (points.length < 3)
|
|
63
|
+
return 0;
|
|
64
|
+
return acGePolygonArea3d(points);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=AcGePolygonAreaUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGePolygonAreaUtil.js","sourceRoot":"","sources":["../../src/util/AcGePolygonAreaUtil.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC/D,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;IAC3B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IAEvB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAClD,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,GAAG,GAAG,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAA;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;;IACzD,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;IAC3B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IAEvB,IAAI,EAAE,GAAG,CAAC,CAAA;IACV,IAAI,EAAE,GAAG,CAAC,CAAA;IACV,IAAI,EAAE,GAAG,CAAC,CAAA;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAClD,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACf,IAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACf,IAAM,EAAE,GAAG,MAAA,EAAE,CAAC,CAAC,mCAAI,CAAC,CAAA;QACpB,IAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACf,IAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACf,IAAM,EAAE,GAAG,MAAA,EAAE,CAAC,CAAC,mCAAI,CAAC,CAAA;QACpB,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3B,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3B,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC/D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC/D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC"}
|
package/lib/util/index.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export { getOcsAngle, getOcsReferenceVector, transformOcsPointToWcs, transformWc
|
|
|
6
6
|
export { AcGeTol, DEFAULT_TOL } from './AcGeTol';
|
|
7
7
|
export { offsetPointByDirectionInXY, offsetVertexPath } from './AcGeCurveOffsetUtil';
|
|
8
8
|
export { offsetSmoothedSampledPath } from './AcGeSampledCurveOffsetUtil';
|
|
9
|
+
export { acGeClosedPolygonArea2d, acGeClosedPolygonArea3d, acGePolygonArea2d, acGePolygonArea3d, acGeSignedPolygonArea2d } from './AcGePolygonAreaUtil';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/util/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,uBAAuB,CAAA"}
|
package/lib/util/index.js
CHANGED
|
@@ -6,4 +6,5 @@ export { getOcsAngle, getOcsReferenceVector, transformOcsPointToWcs, transformWc
|
|
|
6
6
|
export { AcGeTol, DEFAULT_TOL } from './AcGeTol';
|
|
7
7
|
export { offsetPointByDirectionInXY, offsetVertexPath } from './AcGeCurveOffsetUtil';
|
|
8
8
|
export { offsetSmoothedSampledPath } from './AcGeSampledCurveOffsetUtil';
|
|
9
|
+
export { acGeClosedPolygonArea2d, acGeClosedPolygonArea3d, acGePolygonArea2d, acGePolygonArea3d, acGeSignedPolygonArea2d } from './AcGePolygonAreaUtil';
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/lib/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,uBAAuB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mlightcad/geometry-engine",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"require": "./dist/geometry-engine.umd.cjs"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"@mlightcad/common": "1.
|
|
36
|
+
"@mlightcad/common": "1.6.0"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
39
|
"clean": "rimraf dist lib tsconfig.tsbuildinfo",
|