@mlightcad/geometry-engine 3.13.0 → 3.14.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.
Files changed (38) hide show
  1. package/dist/geometry-engine.umd.cjs +1 -1
  2. package/lib/geometry/AcGeCircArc2d.d.ts +103 -0
  3. package/lib/geometry/AcGeCircArc2d.d.ts.map +1 -1
  4. package/lib/geometry/AcGeCircArc2d.js +174 -38
  5. package/lib/geometry/AcGeCircArc2d.js.map +1 -1
  6. package/lib/geometry/AcGeCircArc2dFactory.d.ts +57 -0
  7. package/lib/geometry/AcGeCircArc2dFactory.d.ts.map +1 -0
  8. package/lib/geometry/AcGeCircArc2dFactory.js +209 -0
  9. package/lib/geometry/AcGeCircArc2dFactory.js.map +1 -0
  10. package/lib/geometry/AcGeCircArc3d.d.ts +10 -1
  11. package/lib/geometry/AcGeCircArc3d.d.ts.map +1 -1
  12. package/lib/geometry/AcGeCircArc3d.js +45 -50
  13. package/lib/geometry/AcGeCircArc3d.js.map +1 -1
  14. package/lib/geometry/AcGeCircArcUtil.d.ts +55 -0
  15. package/lib/geometry/AcGeCircArcUtil.d.ts.map +1 -0
  16. package/lib/geometry/AcGeCircArcUtil.js +120 -0
  17. package/lib/geometry/AcGeCircArcUtil.js.map +1 -0
  18. package/lib/geometry/AcGeCurveIntersect.d.ts +64 -0
  19. package/lib/geometry/AcGeCurveIntersect.d.ts.map +1 -0
  20. package/lib/geometry/AcGeCurveIntersect.js +941 -0
  21. package/lib/geometry/AcGeCurveIntersect.js.map +1 -0
  22. package/lib/geometry/index.d.ts +4 -0
  23. package/lib/geometry/index.d.ts.map +1 -1
  24. package/lib/geometry/index.js +2 -0
  25. package/lib/geometry/index.js.map +1 -1
  26. package/lib/index.d.ts +3 -3
  27. package/lib/index.d.ts.map +1 -1
  28. package/lib/index.js +2 -2
  29. package/lib/index.js.map +1 -1
  30. package/lib/util/AcGeMathUtil.d.ts +7 -1
  31. package/lib/util/AcGeMathUtil.d.ts.map +1 -1
  32. package/lib/util/AcGeMathUtil.js +11 -1
  33. package/lib/util/AcGeMathUtil.js.map +1 -1
  34. package/lib/util/index.d.ts +1 -1
  35. package/lib/util/index.d.ts.map +1 -1
  36. package/lib/util/index.js +1 -1
  37. package/lib/util/index.js.map +1 -1
  38. package/package.json +2 -2
@@ -0,0 +1,209 @@
1
+ import { AcGeMathUtil, AcGeTol, FLOAT_TOL, TAU } from '../util';
2
+ import { AcGeCircArc2d } from './AcGeCircArc2d';
3
+ import { acgeAngleAtCenter2d, acgeComputeCircumcircle2d, acgeDistance2d, acgeProjectPointOntoCircle2d } from './AcGeCircArcUtil';
4
+ /**
5
+ * Create the unique circular arc from `start` through `through` to `end`.
6
+ *
7
+ * When `reverseDirection` is true, the complementary sweep between the same
8
+ * endpoints is returned (AutoCAD Ctrl-toggle).
9
+ */
10
+ export function acgeTryCreateArcByThreePoints(start, through, end, reverseDirection) {
11
+ if (reverseDirection === void 0) { reverseDirection = false; }
12
+ var circle = acgeComputeCircumcircle2d(start, through, end);
13
+ if (!circle)
14
+ return null;
15
+ var startAngle = acgeAngleAtCenter2d(circle.center, start);
16
+ var throughAngle = acgeAngleAtCenter2d(circle.center, through);
17
+ var endAngle = acgeAngleAtCenter2d(circle.center, end);
18
+ var clockwise = !AcGeMathUtil.isAngleOnCcwSweep(startAngle, throughAngle, endAngle);
19
+ if (reverseDirection)
20
+ clockwise = !clockwise;
21
+ return AcGeCircArc2d.fromMathAngles(circle.center, circle.radius, startAngle, endAngle, clockwise);
22
+ }
23
+ /**
24
+ * Create a full circle from center and radius.
25
+ */
26
+ export function acgeTryCreateCircle(center, radius) {
27
+ if (!Number.isFinite(radius) || AcGeTol.isNonPositive(radius))
28
+ return null;
29
+ return new AcGeCircArc2d(center, radius, 0, TAU, false);
30
+ }
31
+ /**
32
+ * Create a full circle whose diameter is the segment `p1`–`p2`.
33
+ */
34
+ export function acgeTryCreateCircleByDiameter(p1, p2) {
35
+ var diameter = acgeDistance2d(p1, p2);
36
+ if (AcGeTol.isNonPositive(diameter))
37
+ return null;
38
+ return acgeTryCreateCircle({ x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 }, diameter / 2);
39
+ }
40
+ /**
41
+ * Create a full circle through three non-collinear points.
42
+ */
43
+ export function acgeTryCreateCircleByThreePoints(p1, p2, p3) {
44
+ var circle = acgeComputeCircumcircle2d(p1, p2, p3);
45
+ if (!circle)
46
+ return null;
47
+ return acgeTryCreateCircle(circle.center, circle.radius);
48
+ }
49
+ /**
50
+ * Create the shorter arc from `start` to `end` on the circle at `center`.
51
+ */
52
+ export function acgeTryCreateShorterArc(start, end, center) {
53
+ var radius = acgeDistance2d(center, start);
54
+ if (AcGeTol.isNonPositive(radius))
55
+ return null;
56
+ var startAngle = acgeAngleAtCenter2d(center, start);
57
+ var endAngle = acgeAngleAtCenter2d(center, end);
58
+ var ccwSpan = AcGeMathUtil.normalizeAngle(endAngle - startAngle);
59
+ return AcGeCircArc2d.fromMathAngles(center, radius, startAngle, endAngle, ccwSpan > Math.PI);
60
+ }
61
+ /**
62
+ * Create an arc from center, start, and end with an explicit orientation.
63
+ */
64
+ export function acgeTryCreateArcByCenterStartEnd(center, start, end, clockwise) {
65
+ var radiusFromStart = acgeDistance2d(center, start);
66
+ var radiusFromEnd = acgeDistance2d(center, end);
67
+ if (AcGeTol.isNonPositive(radiusFromStart) ||
68
+ AcGeTol.isNonPositive(radiusFromEnd)) {
69
+ return null;
70
+ }
71
+ var tolerance = Math.max(FLOAT_TOL, radiusFromStart * FLOAT_TOL);
72
+ if (Math.abs(radiusFromStart - radiusFromEnd) > tolerance)
73
+ return null;
74
+ return AcGeCircArc2d.fromMathAngles(center, radiusFromStart, acgeAngleAtCenter2d(center, start), acgeAngleAtCenter2d(center, end), clockwise);
75
+ }
76
+ /**
77
+ * Create a center-start arc whose end is the radial projection of `rawEnd`.
78
+ */
79
+ export function acgeTryCreateArcByCenterStartProjectedEnd(center, start, rawEnd, clockwise) {
80
+ var radius = acgeDistance2d(center, start);
81
+ if (AcGeTol.isNonPositive(radius))
82
+ return null;
83
+ var end = acgeProjectPointOntoCircle2d(center, radius, rawEnd);
84
+ if (!end)
85
+ return null;
86
+ return acgeTryCreateArcByCenterStartEnd(center, start, end, clockwise);
87
+ }
88
+ /**
89
+ * Create a center-start arc from a signed included angle.
90
+ * Positive sweep is counterclockwise.
91
+ */
92
+ export function acgeTryCreateArcByCenterStartSweep(center, start, sweepRad) {
93
+ var radius = acgeDistance2d(center, start);
94
+ var sweep = Math.abs(sweepRad);
95
+ if (AcGeTol.isNonPositive(radius) ||
96
+ AcGeTol.isNonPositive(sweep) ||
97
+ !AcGeTol.great(TAU - sweep, 0)) {
98
+ return null;
99
+ }
100
+ var clockwise = sweepRad < 0;
101
+ var startAngle = acgeAngleAtCenter2d(center, start);
102
+ var endAngle = clockwise ? startAngle - sweep : startAngle + sweep;
103
+ return AcGeCircArc2d.fromMathAngles(center, radius, startAngle, endAngle, clockwise);
104
+ }
105
+ /**
106
+ * Create a center-start arc from a signed chord length.
107
+ */
108
+ export function acgeTryCreateArcByCenterStartChord(center, start, chordLength) {
109
+ var radius = acgeDistance2d(center, start);
110
+ var chord = Math.abs(chordLength);
111
+ if (AcGeTol.isNonPositive(radius) ||
112
+ AcGeTol.isNonPositive(chord) ||
113
+ AcGeTol.great(chord, 2 * radius)) {
114
+ return null;
115
+ }
116
+ var ratio = Math.max(-1, Math.min(1, chord / (2 * radius)));
117
+ var sweep = 2 * Math.asin(ratio);
118
+ return acgeTryCreateArcByCenterStartSweep(center, start, chordLength >= 0 ? sweep : -sweep);
119
+ }
120
+ /**
121
+ * Create a start-end arc from a signed included angle.
122
+ * Positive sweep is counterclockwise.
123
+ */
124
+ export function acgeTryCreateArcByStartEndAngle(start, end, sweepRad) {
125
+ var chord = acgeDistance2d(start, end);
126
+ var sweep = Math.abs(sweepRad);
127
+ if (AcGeTol.isNonPositive(chord) ||
128
+ AcGeTol.isNonPositive(sweep) ||
129
+ !AcGeTol.great(TAU - sweep, 0)) {
130
+ return null;
131
+ }
132
+ var sinHalf = Math.sin(sweep / 2);
133
+ if (AcGeTol.equalToZero(sinHalf))
134
+ return null;
135
+ var radius = chord / (2 * sinHalf);
136
+ var offsetSquared = radius * radius - (chord * chord) / 4;
137
+ if (AcGeTol.less(offsetSquared, 0))
138
+ return null;
139
+ var offset = Math.sqrt(Math.max(0, offsetSquared));
140
+ var midX = (start.x + end.x) / 2;
141
+ var midY = (start.y + end.y) / 2;
142
+ var dx = end.x - start.x;
143
+ var dy = end.y - start.y;
144
+ var ux = -dy / chord;
145
+ var uy = dx / chord;
146
+ var isCounterClockwise = sweepRad >= 0;
147
+ var useLeft = (isCounterClockwise && sweep <= Math.PI) ||
148
+ (!isCounterClockwise && sweep > Math.PI);
149
+ var side = useLeft ? 1 : -1;
150
+ var center = {
151
+ x: midX + ux * offset * side,
152
+ y: midY + uy * offset * side
153
+ };
154
+ return acgeTryCreateArcByCenterStartEnd(center, start, end, !isCounterClockwise);
155
+ }
156
+ /**
157
+ * Create a start-end arc from a tangent direction at the start point.
158
+ */
159
+ export function acgeTryCreateArcByStartEndDirection(start, end, directionRad) {
160
+ var tx = Math.cos(directionRad);
161
+ var ty = Math.sin(directionRad);
162
+ var dx = end.x - start.x;
163
+ var dy = end.y - start.y;
164
+ var nx = -ty;
165
+ var ny = tx;
166
+ var denominator = 2 * (dx * nx + dy * ny);
167
+ if (AcGeTol.equalToZero(denominator))
168
+ return null;
169
+ var lambda = (dx * dx + dy * dy) / denominator;
170
+ if (!Number.isFinite(lambda))
171
+ return null;
172
+ var center = {
173
+ x: start.x + nx * lambda,
174
+ y: start.y + ny * lambda
175
+ };
176
+ var radiusVectorX = start.x - center.x;
177
+ var radiusVectorY = start.y - center.y;
178
+ var cross = radiusVectorX * ty - radiusVectorY * tx;
179
+ if (AcGeTol.equalToZero(cross))
180
+ return null;
181
+ return acgeTryCreateArcByCenterStartEnd(center, start, end, cross < 0);
182
+ }
183
+ /**
184
+ * Create a start-end arc from a signed radius.
185
+ * Positive radius is counterclockwise (+Z).
186
+ */
187
+ export function acgeTryCreateArcByStartEndRadius(start, end, radiusInput) {
188
+ var radius = Math.abs(radiusInput);
189
+ var chord = acgeDistance2d(start, end);
190
+ if (AcGeTol.isNonPositive(radius) ||
191
+ AcGeTol.isNonPositive(chord) ||
192
+ AcGeTol.great(chord, 2 * radius)) {
193
+ return null;
194
+ }
195
+ var midX = (start.x + end.x) / 2;
196
+ var midY = (start.y + end.y) / 2;
197
+ var dx = end.x - start.x;
198
+ var dy = end.y - start.y;
199
+ var ux = -dy / chord;
200
+ var uy = dx / chord;
201
+ var offset = Math.sqrt(Math.max(0, radius * radius - (chord * chord) / 4));
202
+ var side = radiusInput >= 0 ? 1 : -1;
203
+ var center = {
204
+ x: midX + ux * offset * side,
205
+ y: midY + uy * offset * side
206
+ };
207
+ return acgeTryCreateArcByCenterStartEnd(center, start, end, radiusInput < 0);
208
+ }
209
+ //# sourceMappingURL=AcGeCircArc2dFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeCircArc2dFactory.js","sourceRoot":"","sources":["../../src/geometry/AcGeCircArc2dFactory.ts"],"names":[],"mappings":"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"}
@@ -21,13 +21,22 @@ export declare class AcGeCircArc3d extends AcGeCurve3d {
21
21
  * @returns Return center point of the arc
22
22
  */
23
23
  static computeCenterPoint(startPoint: AcGePoint3dLike, endPoint: AcGePoint3dLike, pointOnArc: AcGePoint3dLike): AcGePoint3d | null;
24
+ /**
25
+ * Create the unique arc from `startPoint` through `pointOnArc` to `endPoint`.
26
+ *
27
+ * The through point selects the major or minor sweep, including arcs greater
28
+ * than 180°. The plane normal is chosen so the curve is parameterized
29
+ * counterclockwise from start to end. Return `null` when the points are
30
+ * collinear.
31
+ */
32
+ static tryCreateByThreePoints(startPoint: AcGePoint3dLike, endPoint: AcGePoint3dLike, pointOnArc: AcGePoint3dLike): AcGeCircArc3d | null;
24
33
  /**
25
34
  * Create arc by three points
26
35
  * @param startPoint Input the start point
27
36
  * @param endPoint Input the end point
28
37
  * @param pointOnArc Input one point between the start point and the end point
29
38
  */
30
- static createByThreePoints(startPoint: AcGePoint3dLike, endPoint: AcGePoint3dLike, pointOnArc: AcGePoint3dLike): AcGeCircArc3d | undefined;
39
+ static createByThreePoints(startPoint: AcGePoint3dLike, endPoint: AcGePoint3dLike, pointOnArc: AcGePoint3dLike): AcGeCircArc3d | null;
31
40
  /**
32
41
  * Create a 3d circular arc.
33
42
  * @param center The center point of the arc.
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeCircArc3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeCircArc3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeCircArc3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeCircArc3d.ts"],"names":[],"mappings":"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"}
@@ -26,9 +26,9 @@ var __values = (this && this.__values) || function(o) {
26
26
  };
27
27
  import { AcCmErrors } from '@mlightcad/common';
28
28
  import { AcGeBox3d, AcGePlane, AcGePoint3d, AcGeVector3d } from '../math';
29
- import { AcGeMathUtil, ORIGIN_POINT_3D, TAU } from '../util';
29
+ import { AcGeMathUtil, AcGeTol, ORIGIN_POINT_3D, TAU } from '../util';
30
+ import { acgeComputeCircumcircle3d } from './AcGeCircArcUtil';
30
31
  import { AcGeCurve3d } from './AcGeCurve3d';
31
- import { AcGeLine3d } from './AcGeLine3d';
32
32
  /**
33
33
  * The class represeting both full circles and circular arcs in 3d space. The ellipse arc is
34
34
  * defined by a center point, radius, start angle, end angle, a normal vector, and a reference
@@ -74,46 +74,51 @@ var AcGeCircArc3d = /** @class */ (function (_super) {
74
74
  * @returns Return center point of the arc
75
75
  */
76
76
  AcGeCircArc3d.computeCenterPoint = function (startPoint, endPoint, pointOnArc) {
77
- // Midpoints of the edges
78
- var mid1 = new AcGeVector3d()
79
- .addVectors(startPoint, endPoint)
80
- .multiplyScalar(0.5);
81
- var mid2 = new AcGeVector3d()
82
- .addVectors(startPoint, pointOnArc)
83
- .multiplyScalar(0.5);
84
- // Vectors perpendicular to the edges
85
- var vec1 = new AcGeVector3d().subVectors(endPoint, startPoint);
86
- var vec2 = new AcGeVector3d().subVectors(pointOnArc, startPoint);
87
- // Normal vector to the plane formed by the triangle
88
- var normal = new AcGeVector3d().crossVectors(vec1, vec2).normalize();
89
- if (normal.lengthSq() === 0) {
90
- // If the points are collinear, the normal vector will have zero length.
91
- console.error('Points are collinear and cannot form a valid arc.');
77
+ var _a, _b;
78
+ return ((_b = (_a = acgeComputeCircumcircle3d(startPoint, pointOnArc, endPoint)) === null || _a === void 0 ? void 0 : _a.center) !== null && _b !== void 0 ? _b : null);
79
+ };
80
+ /**
81
+ * Create the unique arc from `startPoint` through `pointOnArc` to `endPoint`.
82
+ *
83
+ * The through point selects the major or minor sweep, including arcs greater
84
+ * than 180°. The plane normal is chosen so the curve is parameterized
85
+ * counterclockwise from start to end. Return `null` when the points are
86
+ * collinear.
87
+ */
88
+ AcGeCircArc3d.tryCreateByThreePoints = function (startPoint, endPoint, pointOnArc) {
89
+ var _a, _b, _c;
90
+ var circle = acgeComputeCircumcircle3d(startPoint, pointOnArc, endPoint);
91
+ if (!circle)
92
92
  return null;
93
- }
94
- // Compute perpendicular vectors on the plane of the triangle
95
- var perpendicular1 = new AcGeVector3d()
96
- .crossVectors(vec1, normal)
97
- .normalize();
98
- var perpendicular2 = new AcGeVector3d()
99
- .crossVectors(vec2, normal)
100
- .normalize();
101
- // Solve the system of equations to find the intersection point (center of the circle)
102
- var direction1 = perpendicular1
103
- .clone()
104
- .multiplyScalar(Number.MAX_SAFE_INTEGER);
105
- var direction2 = perpendicular2
106
- .clone()
107
- .multiplyScalar(Number.MAX_SAFE_INTEGER);
108
- var line1 = new AcGeLine3d(mid1, mid1.clone().add(direction1));
109
- var line2 = new AcGeLine3d(mid2, mid2.clone().add(direction2));
110
- var center = new AcGeVector3d();
111
- var result = line1.closestPointToPoint(line2.startPoint, true, center);
112
- if (!result) {
113
- console.error('Cannot find a valid center for the arc.');
93
+ var center = circle.center, radius = circle.radius;
94
+ var toStart = new AcGeVector3d(startPoint.x - center.x, startPoint.y - center.y, ((_a = startPoint.z) !== null && _a !== void 0 ? _a : 0) - center.z);
95
+ var toThrough = new AcGeVector3d(pointOnArc.x - center.x, pointOnArc.y - center.y, ((_b = pointOnArc.z) !== null && _b !== void 0 ? _b : 0) - center.z);
96
+ var toEnd = new AcGeVector3d(endPoint.x - center.x, endPoint.y - center.y, ((_c = endPoint.z) !== null && _c !== void 0 ? _c : 0) - center.z);
97
+ if (toStart.lengthSq() === 0 || toEnd.lengthSq() === 0)
114
98
  return null;
99
+ // Prefer start×end so the initial frame matches the endpoint chord; fall
100
+ // back to start×through when start and end are diametrically opposite.
101
+ var normal = new AcGeVector3d().crossVectors(toStart, toEnd);
102
+ if (normal.lengthSq() === 0) {
103
+ normal.crossVectors(toStart, toThrough);
104
+ if (normal.lengthSq() === 0)
105
+ return null;
115
106
  }
116
- return center;
107
+ normal.normalize();
108
+ var refVec = toStart.clone().normalize();
109
+ var yAxis = new AcGeVector3d().crossVectors(normal, refVec);
110
+ var angleOf = function (vector) {
111
+ return AcGeMathUtil.normalizeAngle(Math.atan2(vector.dot(yAxis), vector.dot(refVec)));
112
+ };
113
+ if (!AcGeMathUtil.isAngleOnCcwSweep(0, angleOf(toThrough), angleOf(toEnd))) {
114
+ normal.negate();
115
+ yAxis.negate();
116
+ }
117
+ var endAngle = angleOf(toEnd);
118
+ if (AcGeTol.equalToZero(endAngle)) {
119
+ endAngle = TAU;
120
+ }
121
+ return new AcGeCircArc3d(center, radius, 0, endAngle, normal, refVec);
117
122
  };
118
123
  /**
119
124
  * Create arc by three points
@@ -122,17 +127,7 @@ var AcGeCircArc3d = /** @class */ (function (_super) {
122
127
  * @param pointOnArc Input one point between the start point and the end point
123
128
  */
124
129
  AcGeCircArc3d.createByThreePoints = function (startPoint, endPoint, pointOnArc) {
125
- var center = AcGeCircArc3d.computeCenterPoint(startPoint, endPoint, pointOnArc);
126
- if (center) {
127
- var radius = center.distanceTo(startPoint);
128
- // Compute the vectors from the center to the start and end points
129
- var centerToStart = new AcGeVector3d().subVectors(startPoint, center);
130
- var centerToEnd = new AcGeVector3d().subVectors(endPoint, center);
131
- // Compute the start angle and end angle relative to the x-axis
132
- var startAngle = Math.atan2(centerToStart.y, centerToStart.x);
133
- var endAngle = Math.atan2(centerToEnd.y, centerToEnd.x);
134
- return new AcGeCircArc3d(center, radius, startAngle, endAngle, AcGeVector3d.Z_AXIS);
135
- }
130
+ return AcGeCircArc3d.tryCreateByThreePoints(startPoint, endPoint, pointOnArc);
136
131
  };
137
132
  Object.defineProperty(AcGeCircArc3d.prototype, "center", {
138
133
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeCircArc3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeCircArc3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeCircArc3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeCircArc3d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { AcGePoint2d, AcGePoint2dLike, AcGePoint3d, AcGePoint3dLike } from '../math';
2
+ /**
3
+ * Circumcircle of three points in the XY plane.
4
+ */
5
+ export interface AcGeCircumcircle2d {
6
+ center: AcGePoint2d;
7
+ radius: number;
8
+ }
9
+ /**
10
+ * Circumcircle of three non-collinear points in 3d.
11
+ */
12
+ export interface AcGeCircumcircle3d {
13
+ center: AcGePoint3d;
14
+ radius: number;
15
+ }
16
+ /**
17
+ * Return the XY circumcircle of three points, or `null` when they are collinear.
18
+ */
19
+ export declare function acgeComputeCircumcircle2d(p1: AcGePoint2dLike, p2: AcGePoint2dLike, p3: AcGePoint2dLike): AcGeCircumcircle2d | null;
20
+ /**
21
+ * Return the unique circumcircle of three 3d points, or `null` when they are collinear.
22
+ */
23
+ export declare function acgeComputeCircumcircle3d(a: AcGePoint3dLike, b: AcGePoint3dLike, c: AcGePoint3dLike): AcGeCircumcircle3d | null;
24
+ /**
25
+ * Return the mathematical polar angle of `point` around `center` in XY.
26
+ */
27
+ export declare function acgeAngleAtCenter2d(center: AcGePoint2dLike, point: AcGePoint2dLike): number;
28
+ /**
29
+ * XY distance between two points.
30
+ */
31
+ export declare function acgeDistance2d(p1: AcGePoint2dLike, p2: AcGePoint2dLike): number;
32
+ /**
33
+ * Project `point` radially onto the circle `(center, radius)`.
34
+ * Return `null` when the point coincides with the center.
35
+ */
36
+ export declare function acgeProjectPointOntoCircle2d(center: AcGePoint2dLike, radius: number, point: AcGePoint2dLike): AcGePoint2d | null;
37
+ /**
38
+ * True when `point` lies on the circle `(center, radius)` within a radial
39
+ * tolerance. The default tolerance is `max(FLOAT_TOL, radius * 1e-5)`.
40
+ */
41
+ export declare function acgePointLiesOnCircle2d(point: AcGePoint2dLike, center: AcGePoint2dLike, radius: number, eps?: number): boolean;
42
+ /**
43
+ * True when two circles share the same center and radius within `eps`
44
+ * (default `1e-8`).
45
+ */
46
+ export declare function acgeSameCircle2d(center1: AcGePoint2dLike, radius1: number, center2: AcGePoint2dLike, radius2: number, eps?: number): boolean;
47
+ /**
48
+ * Lexicographic pick among nearest-point candidates: smaller `distSq` wins;
49
+ * on a near-tie, larger `align` wins.
50
+ *
51
+ * Use this when two geometries share a vertex so nearest-point distances are
52
+ * equal and a later-wins compare would always take the second candidate.
53
+ */
54
+ export declare function acgeIsBetterDistanceAlign(distSq: number, align: number, bestDistSq: number, bestAlign: number): boolean;
55
+ //# sourceMappingURL=AcGeCircArcUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeCircArcUtil.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeCircArcUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EAEhB,MAAM,SAAS,CAAA;AAGhB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,eAAe,GAClB,kBAAkB,GAAG,IAAI,CAuB3B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,GACjB,kBAAkB,GAAG,IAAI,CAqB3B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,eAAe,GACrB,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,eAAe,EACnB,EAAE,EAAE,eAAe,GAClB,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,GACrB,WAAW,GAAG,IAAI,CAQpB;AAOD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAA6B,GACjC,OAAO,CAMT;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAKT"}
@@ -0,0 +1,120 @@
1
+ import { AcGePoint2d, AcGePoint3d, AcGeVector3d } from '../math';
2
+ import { AcGeTol, FLOAT_TOL } from '../util';
3
+ /**
4
+ * Return the XY circumcircle of three points, or `null` when they are collinear.
5
+ */
6
+ export function acgeComputeCircumcircle2d(p1, p2, p3) {
7
+ var x1 = p1.x;
8
+ var y1 = p1.y;
9
+ var x2 = p2.x;
10
+ var y2 = p2.y;
11
+ var x3 = p3.x;
12
+ var y3 = p3.y;
13
+ var d = 2 * (x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2));
14
+ if (AcGeTol.equalToZero(d))
15
+ return null;
16
+ var ux = ((x1 * x1 + y1 * y1) * (y2 - y3) +
17
+ (x2 * x2 + y2 * y2) * (y3 - y1) +
18
+ (x3 * x3 + y3 * y3) * (y1 - y2)) /
19
+ d;
20
+ var uy = ((x1 * x1 + y1 * y1) * (x3 - x2) +
21
+ (x2 * x2 + y2 * y2) * (x1 - x3) +
22
+ (x3 * x3 + y3 * y3) * (x2 - x1)) /
23
+ d;
24
+ var radius = Math.hypot(ux - x1, uy - y1);
25
+ if (!Number.isFinite(radius) || AcGeTol.isNonPositive(radius))
26
+ return null;
27
+ return { center: new AcGePoint2d(ux, uy), radius: radius };
28
+ }
29
+ /**
30
+ * Return the unique circumcircle of three 3d points, or `null` when they are collinear.
31
+ */
32
+ export function acgeComputeCircumcircle3d(a, b, c) {
33
+ var _a, _b, _c;
34
+ var ax = a.x;
35
+ var ay = a.y;
36
+ var az = (_a = a.z) !== null && _a !== void 0 ? _a : 0;
37
+ var ab = new AcGeVector3d(b.x - ax, b.y - ay, ((_b = b.z) !== null && _b !== void 0 ? _b : 0) - az);
38
+ var ac = new AcGeVector3d(c.x - ax, c.y - ay, ((_c = c.z) !== null && _c !== void 0 ? _c : 0) - az);
39
+ var n = new AcGeVector3d().crossVectors(ab, ac);
40
+ var n2 = n.lengthSq();
41
+ if (n2 < FLOAT_TOL * FLOAT_TOL)
42
+ return null;
43
+ var ab2 = ab.lengthSq();
44
+ var ac2 = ac.lengthSq();
45
+ var offset = new AcGeVector3d()
46
+ .crossVectors(n, ab)
47
+ .multiplyScalar(ac2)
48
+ .add(new AcGeVector3d().crossVectors(ac, n).multiplyScalar(ab2))
49
+ .multiplyScalar(1 / (2 * n2));
50
+ var center = new AcGePoint3d(ax + offset.x, ay + offset.y, az + offset.z);
51
+ var radius = Math.hypot(center.x - ax, center.y - ay, center.z - az);
52
+ if (!Number.isFinite(radius) || AcGeTol.isNonPositive(radius))
53
+ return null;
54
+ return { center: center, radius: radius };
55
+ }
56
+ /**
57
+ * Return the mathematical polar angle of `point` around `center` in XY.
58
+ */
59
+ export function acgeAngleAtCenter2d(center, point) {
60
+ return Math.atan2(point.y - center.y, point.x - center.x);
61
+ }
62
+ /**
63
+ * XY distance between two points.
64
+ */
65
+ export function acgeDistance2d(p1, p2) {
66
+ return Math.hypot(p2.x - p1.x, p2.y - p1.y);
67
+ }
68
+ /**
69
+ * Project `point` radially onto the circle `(center, radius)`.
70
+ * Return `null` when the point coincides with the center.
71
+ */
72
+ export function acgeProjectPointOntoCircle2d(center, radius, point) {
73
+ if (AcGeTol.isNonPositive(radius))
74
+ return null;
75
+ var dx = point.x - center.x;
76
+ var dy = point.y - center.y;
77
+ var distance = Math.hypot(dx, dy);
78
+ if (AcGeTol.isNonPositive(distance))
79
+ return null;
80
+ var scale = radius / distance;
81
+ return new AcGePoint2d(center.x + dx * scale, center.y + dy * scale);
82
+ }
83
+ /**
84
+ * Default absolute tolerance when comparing two circle centers/radii in XY.
85
+ */
86
+ var ACGE_SAME_CIRCLE_EPS = 1e-8;
87
+ /**
88
+ * True when `point` lies on the circle `(center, radius)` within a radial
89
+ * tolerance. The default tolerance is `max(FLOAT_TOL, radius * 1e-5)`.
90
+ */
91
+ export function acgePointLiesOnCircle2d(point, center, radius, eps) {
92
+ var radial = Math.abs(acgeDistance2d(point, center) - radius);
93
+ return radial <= (eps !== null && eps !== void 0 ? eps : Math.max(FLOAT_TOL, radius * 1e-5));
94
+ }
95
+ /**
96
+ * True when two circles share the same center and radius within `eps`
97
+ * (default `1e-8`).
98
+ */
99
+ export function acgeSameCircle2d(center1, radius1, center2, radius2, eps) {
100
+ if (eps === void 0) { eps = ACGE_SAME_CIRCLE_EPS; }
101
+ return (Math.abs(center1.x - center2.x) <= eps &&
102
+ Math.abs(center1.y - center2.y) <= eps &&
103
+ Math.abs(radius1 - radius2) <= eps);
104
+ }
105
+ /**
106
+ * Lexicographic pick among nearest-point candidates: smaller `distSq` wins;
107
+ * on a near-tie, larger `align` wins.
108
+ *
109
+ * Use this when two geometries share a vertex so nearest-point distances are
110
+ * equal and a later-wins compare would always take the second candidate.
111
+ */
112
+ export function acgeIsBetterDistanceAlign(distSq, align, bestDistSq, bestAlign) {
113
+ var tie = Math.max(1e-18, Math.abs(bestDistSq) * 1e-9);
114
+ if (distSq < bestDistSq - tie)
115
+ return true;
116
+ if (distSq > bestDistSq + tie)
117
+ return false;
118
+ return align > bestAlign;
119
+ }
120
+ //# sourceMappingURL=AcGeCircArcUtil.js.map