@itwin/core-geometry 5.8.0-dev.1 → 5.8.0-dev.10
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/CHANGELOG.md +26 -1
- package/lib/cjs/Geometry.d.ts +24 -14
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +34 -14
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +1 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +1 -0
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +4 -0
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +14 -0
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ConstrainedCurve2d.d.ts +149 -0
- package/lib/cjs/curve/ConstrainedCurve2d.d.ts.map +1 -0
- package/lib/cjs/curve/ConstrainedCurve2d.js +317 -0
- package/lib/cjs/curve/ConstrainedCurve2d.js.map +1 -0
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +2 -2
- package/lib/cjs/curve/CurvePrimitive.js +2 -2
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.d.ts +26 -0
- package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.js +78 -0
- package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts +152 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js +843 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.d.ts +97 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.js +300 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts +105 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.js +141 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts +27 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js +152 -0
- package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts +81 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.js +170 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts +96 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.js +187 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts +91 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js +197 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts +129 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.js +208 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts +87 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.js +193 -0
- package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -0
- package/lib/cjs/geometry3d/Point2dVector2d.d.ts +7 -0
- package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js +9 -0
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/Polynomials.js +8 -6
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +3 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/Geometry.d.ts +24 -14
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +34 -14
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +1 -0
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +1 -0
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +4 -0
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +14 -0
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ConstrainedCurve2d.d.ts +149 -0
- package/lib/esm/curve/ConstrainedCurve2d.d.ts.map +1 -0
- package/lib/esm/curve/ConstrainedCurve2d.js +313 -0
- package/lib/esm/curve/ConstrainedCurve2d.js.map +1 -0
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +2 -2
- package/lib/esm/curve/CurvePrimitive.js +2 -2
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.d.ts +26 -0
- package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.js +74 -0
- package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts +152 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js +839 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.d.ts +97 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.js +295 -0
- package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts +105 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.js +135 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts +27 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js +148 -0
- package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts +81 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.js +166 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts +96 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.js +183 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts +91 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js +193 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts +129 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.js +204 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts +87 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.js +189 -0
- package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -0
- package/lib/esm/geometry3d/Point2dVector2d.d.ts +7 -0
- package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js +9 -0
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
- package/lib/esm/numerics/Polynomials.js +8 -6
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js +3 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module CartesianGeometry
|
|
3
|
+
*/
|
|
4
|
+
import { Point2d, Vector2d } from "../../../geometry3d/Point2dVector2d";
|
|
5
|
+
import { XAndY } from "../../../geometry3d/XYZProps";
|
|
6
|
+
import { ImplicitCurve2d } from "./ImplicitCurve2d";
|
|
7
|
+
/**
|
|
8
|
+
* Internal class for parabola in the xy plane, with an angular parameterization.
|
|
9
|
+
* * In uv local coordinates
|
|
10
|
+
* * Let c = cos(theta) and s = sin(theta)
|
|
11
|
+
* * The parabola is (u,v) = (s/(1+c), (1-c)/(1+c))
|
|
12
|
+
* * The uv derivative is (u',v') = (1/(c+1), 2s/(c+1))
|
|
13
|
+
* * Basic trig identities confirm that u^2 = v as expected for a parabola.
|
|
14
|
+
* * This traces the parabola in a full theta range (-2PI < theta < 2PI).
|
|
15
|
+
* * The angle theta = 2PI is the singular point.
|
|
16
|
+
* * In XY coordinates the mapped parabola is
|
|
17
|
+
* * x = A + Uu + Vv
|
|
18
|
+
* * X = A + U*s/(1+c) + V*(1-2*c/(1+c))
|
|
19
|
+
* * X' = U * (1/(c+1) + V*2s/(c+1))
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare class UnboundedParabola2d extends ImplicitCurve2d {
|
|
23
|
+
/** The Cartesian coordinates of any center on the line. */
|
|
24
|
+
center: Point2d;
|
|
25
|
+
/** The local u axis direction. */
|
|
26
|
+
vectorU: Vector2d;
|
|
27
|
+
/** The local v axis direction. */
|
|
28
|
+
vectorV: Vector2d;
|
|
29
|
+
private constructor();
|
|
30
|
+
/** Return a clone of this Parabola. */
|
|
31
|
+
clone(): UnboundedParabola2d;
|
|
32
|
+
/**
|
|
33
|
+
* Create an UnboundedParabola2d from an xy object and a radius.
|
|
34
|
+
* @param center xy coordinates of center
|
|
35
|
+
* @param vectorU vector from center to to theta=0 vertex, i.e., along axis on the "inside" of the curve
|
|
36
|
+
* @param vectorV vector from center to the transverse direction.
|
|
37
|
+
*/
|
|
38
|
+
static createCenterAndAxisVectors(center: XAndY, vectorU: XAndY, vectorV: XAndY): UnboundedParabola2d;
|
|
39
|
+
/**
|
|
40
|
+
* Return the local (uv) coordinate of a global point.
|
|
41
|
+
* @param spacePoint point for coordinate conversion
|
|
42
|
+
*/
|
|
43
|
+
globalToLocal(spacePoint: XAndY): Vector2d | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Returns xy coordinate on the Parabola.
|
|
46
|
+
* @param radians parametric angle on the Parabola
|
|
47
|
+
*/
|
|
48
|
+
radiansToPoint2d(radians: number): Point2d | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the tangent at given radians value.
|
|
51
|
+
* @param radians parametric angle on the parabola
|
|
52
|
+
*/
|
|
53
|
+
radiansToTangentVector2d(radians: number): Vector2d | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Return the implicit function value at xy.
|
|
56
|
+
* @param xy space point
|
|
57
|
+
* @returns v - u*u
|
|
58
|
+
*/
|
|
59
|
+
functionValue(xy: XAndY): number;
|
|
60
|
+
/**
|
|
61
|
+
* Evaluate the (global coordinates) gradient (steepest descent) of the implicit function.
|
|
62
|
+
* @param xy space point
|
|
63
|
+
* @returns gradient vector for the implicit function
|
|
64
|
+
*/
|
|
65
|
+
gradient(xy: XAndY): Vector2d;
|
|
66
|
+
/**
|
|
67
|
+
* Solve for parametric radians at Parabola points which are perpendicular projections of spacePoint.
|
|
68
|
+
* * Up to 4 solutions are possible.
|
|
69
|
+
* @param spacePoint the space point.
|
|
70
|
+
* @handler the handler to receive all the points on the curve and radians where perpendicular happens.
|
|
71
|
+
*/
|
|
72
|
+
emitPerpendiculars(spacePoint: Point2d, handler: (curvePoint: Point2d, radians: number | undefined) => any): void;
|
|
73
|
+
/** Returns true if the circle radius is near zero. */
|
|
74
|
+
isDegenerate(): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Test if the centers and axes of the vectors are close
|
|
77
|
+
* @param other second Parabola
|
|
78
|
+
* @param negatedAndExchangedAxesAreEqual
|
|
79
|
+
* * if false, a strong equality test requiring both U and V vectors to match
|
|
80
|
+
* * This strong test is a test for identical parameterization
|
|
81
|
+
* * if true, a weak equality test that allows U and V to be negated and or exchanged.
|
|
82
|
+
* * The weak test is a test for the same implicit set
|
|
83
|
+
* @returns true if identical to tolerance.
|
|
84
|
+
*/
|
|
85
|
+
isSameParabola(other: UnboundedParabola2d, negatedAndExchangedAxesAreEqual?: boolean): boolean;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=UnboundedParabola2d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnboundedParabola2d.d.ts","sourceRoot":"","sources":["../../../../../src/curve/internalContexts/geometry2d/UnboundedParabola2d.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,2DAA2D;IACpD,MAAM,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IACzB,kCAAkC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IAEzB,OAAO;IAMP,uCAAuC;IAChC,KAAK,IAAI,mBAAmB;IAInC;;;;;OAKG;WACW,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,mBAAmB;IAM5G;;;OAGG;IACI,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS;IAU7D;;;OAGG;IACa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAQtE;;;OAGG;IACa,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAU/E;;;;OAIG;IACa,aAAa,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM;IAMhD;;;;OAIG;IACa,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ;IAY7C;;;;;OAKG;IACa,kBAAkB,CAChC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,GAAG,GACtF,IAAI;IA2BP,sDAAsD;IAEtC,YAAY,IAAI,OAAO;IAGvC;;;;;;;;;OASG;IACI,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,+BAA+B,GAAE,OAAe,GAAG,OAAO;CAwB7G"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module CartesianGeometry
|
|
7
|
+
*/
|
|
8
|
+
import { SmallSystem } from "../../../numerics/SmallSystem";
|
|
9
|
+
import { Geometry } from "../../../Geometry";
|
|
10
|
+
import { Point2d, Vector2d } from "../../../geometry3d/Point2dVector2d";
|
|
11
|
+
import { TrigPolynomial } from "../../../numerics/Polynomials";
|
|
12
|
+
import { ImplicitCurve2d } from "./ImplicitCurve2d";
|
|
13
|
+
/**
|
|
14
|
+
* Internal class for parabola in the xy plane, with an angular parameterization.
|
|
15
|
+
* * In uv local coordinates
|
|
16
|
+
* * Let c = cos(theta) and s = sin(theta)
|
|
17
|
+
* * The parabola is (u,v) = (s/(1+c), (1-c)/(1+c))
|
|
18
|
+
* * The uv derivative is (u',v') = (1/(c+1), 2s/(c+1))
|
|
19
|
+
* * Basic trig identities confirm that u^2 = v as expected for a parabola.
|
|
20
|
+
* * This traces the parabola in a full theta range (-2PI < theta < 2PI).
|
|
21
|
+
* * The angle theta = 2PI is the singular point.
|
|
22
|
+
* * In XY coordinates the mapped parabola is
|
|
23
|
+
* * x = A + Uu + Vv
|
|
24
|
+
* * X = A + U*s/(1+c) + V*(1-2*c/(1+c))
|
|
25
|
+
* * X' = U * (1/(c+1) + V*2s/(c+1))
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export class UnboundedParabola2d extends ImplicitCurve2d {
|
|
29
|
+
/** The Cartesian coordinates of any center on the line. */
|
|
30
|
+
center;
|
|
31
|
+
/** The local u axis direction. */
|
|
32
|
+
vectorU;
|
|
33
|
+
/** The local v axis direction. */
|
|
34
|
+
vectorV;
|
|
35
|
+
/* Constructor - CAPTURE given center and axis vectors */
|
|
36
|
+
constructor(center, vectorU, vectorV) {
|
|
37
|
+
super();
|
|
38
|
+
this.center = center;
|
|
39
|
+
this.vectorU = vectorU;
|
|
40
|
+
this.vectorV = vectorV;
|
|
41
|
+
}
|
|
42
|
+
/** Return a clone of this Parabola. */
|
|
43
|
+
clone() {
|
|
44
|
+
// the create method clones the inputs
|
|
45
|
+
return UnboundedParabola2d.createCenterAndAxisVectors(this.center, this.vectorU, this.vectorV);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create an UnboundedParabola2d from an xy object and a radius.
|
|
49
|
+
* @param center xy coordinates of center
|
|
50
|
+
* @param vectorU vector from center to to theta=0 vertex, i.e., along axis on the "inside" of the curve
|
|
51
|
+
* @param vectorV vector from center to the transverse direction.
|
|
52
|
+
*/
|
|
53
|
+
static createCenterAndAxisVectors(center, vectorU, vectorV) {
|
|
54
|
+
return new UnboundedParabola2d(Point2d.create(center.x, center.y), Vector2d.create(vectorU.x, vectorU.y), Vector2d.create(vectorV.x, vectorV.y));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Return the local (uv) coordinate of a global point.
|
|
58
|
+
* @param spacePoint point for coordinate conversion
|
|
59
|
+
*/
|
|
60
|
+
globalToLocal(spacePoint) {
|
|
61
|
+
const result = Vector2d.create();
|
|
62
|
+
if (SmallSystem.linearSystem2d(this.vectorU.x, this.vectorV.x, this.vectorU.y, this.vectorV.y, spacePoint.x - this.center.x, spacePoint.y - this.center.y, result))
|
|
63
|
+
return result;
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Returns xy coordinate on the Parabola.
|
|
68
|
+
* @param radians parametric angle on the Parabola
|
|
69
|
+
*/
|
|
70
|
+
radiansToPoint2d(radians) {
|
|
71
|
+
const c = Math.cos(radians);
|
|
72
|
+
const s = Math.sin(radians);
|
|
73
|
+
const q = 1 + c;
|
|
74
|
+
if (Geometry.isSmallMetricDistance(Math.abs(q)))
|
|
75
|
+
return undefined;
|
|
76
|
+
return this.center.plus2Scaled(this.vectorU, s / q, this.vectorV, (1 - c) / q);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns the tangent at given radians value.
|
|
80
|
+
* @param radians parametric angle on the parabola
|
|
81
|
+
*/
|
|
82
|
+
radiansToTangentVector2d(radians) {
|
|
83
|
+
const c = Math.cos(radians);
|
|
84
|
+
const s = Math.sin(radians);
|
|
85
|
+
const q = 1 + c;
|
|
86
|
+
const u = Geometry.conditionalDivideCoordinate(1, q);
|
|
87
|
+
const v = Geometry.conditionalDivideCoordinate(2 * s, q * q);
|
|
88
|
+
if (u === undefined || v === undefined)
|
|
89
|
+
return undefined;
|
|
90
|
+
return Vector2d.createAdd2Scaled(this.vectorU, u, this.vectorV, v);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Return the implicit function value at xy.
|
|
94
|
+
* @param xy space point
|
|
95
|
+
* @returns v - u*u
|
|
96
|
+
*/
|
|
97
|
+
functionValue(xy) {
|
|
98
|
+
const vectorUV = this.globalToLocal(xy);
|
|
99
|
+
if (vectorUV === undefined)
|
|
100
|
+
return 0;
|
|
101
|
+
return vectorUV.y - vectorUV.x * vectorUV.x;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Evaluate the (global coordinates) gradient (steepest descent) of the implicit function.
|
|
105
|
+
* @param xy space point
|
|
106
|
+
* @returns gradient vector for the implicit function
|
|
107
|
+
*/
|
|
108
|
+
gradient(xy) {
|
|
109
|
+
const vectorUV = this.globalToLocal(xy);
|
|
110
|
+
const result = Vector2d.create();
|
|
111
|
+
// use INVERSE of TRANSPOSE of [UV] matrix to map gradient terms
|
|
112
|
+
if (vectorUV !== undefined && SmallSystem.linearSystem2d(this.vectorU.x, this.vectorU.y, this.vectorV.x, this.vectorV.y, -2 * vectorUV.x, 1.0, result))
|
|
113
|
+
return result;
|
|
114
|
+
return Vector2d.create(0, 0);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Solve for parametric radians at Parabola points which are perpendicular projections of spacePoint.
|
|
118
|
+
* * Up to 4 solutions are possible.
|
|
119
|
+
* @param spacePoint the space point.
|
|
120
|
+
* @handler the handler to receive all the points on the curve and radians where perpendicular happens.
|
|
121
|
+
*/
|
|
122
|
+
emitPerpendiculars(spacePoint, handler) {
|
|
123
|
+
const vectorW = Vector2d.createStartEnd(spacePoint, this.center);
|
|
124
|
+
// vectorW is from space point to curve origin.
|
|
125
|
+
// vector to curve at an angle theta is vectorW + (s/(1=c)) U + ((1-c)/(1-s)) V
|
|
126
|
+
// where c and s are cosine and sine of the parameterization angle.
|
|
127
|
+
// The dot product of the curve tangent vector with the vector from spacePoint to curve
|
|
128
|
+
// has trig terms appearing at highest degree 2, hence is solved by the function
|
|
129
|
+
// solveUnitCircleImplicitQuadricIntersection.
|
|
130
|
+
const dotWU = vectorW.dotProduct(this.vectorU);
|
|
131
|
+
const dotWV = vectorW.dotProduct(this.vectorV);
|
|
132
|
+
const dotUU = this.vectorU.dotProduct(this.vectorU);
|
|
133
|
+
const dotVV = this.vectorV.dotProduct(this.vectorV);
|
|
134
|
+
const dotUV = this.vectorU.dotProduct(this.vectorV);
|
|
135
|
+
const coff1 = dotWU;
|
|
136
|
+
const coffC = 2 * dotWU;
|
|
137
|
+
const coffS = 2 * dotWV + dotUU + 2 * dotVV;
|
|
138
|
+
const coffCC = dotWU;
|
|
139
|
+
const coffSC = 2 * dotWV + dotUU - 2 * dotVV;
|
|
140
|
+
const coffSS = 3 * dotUV;
|
|
141
|
+
const radiansSolutions = [];
|
|
142
|
+
TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(coffCC, coffSC, coffSS, coffC, coffS, coff1, radiansSolutions);
|
|
143
|
+
for (const radians of radiansSolutions) {
|
|
144
|
+
const curvePoint = this.radiansToPoint2d(radians);
|
|
145
|
+
if (curvePoint !== undefined)
|
|
146
|
+
handler(curvePoint, radians);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** Returns true if the circle radius is near zero. */
|
|
150
|
+
// eslint-disable-next-line @itwin/prefer-get
|
|
151
|
+
isDegenerate() {
|
|
152
|
+
return undefined === this.globalToLocal(Point2d.create(0, 0));
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Test if the centers and axes of the vectors are close
|
|
156
|
+
* @param other second Parabola
|
|
157
|
+
* @param negatedAndExchangedAxesAreEqual
|
|
158
|
+
* * if false, a strong equality test requiring both U and V vectors to match
|
|
159
|
+
* * This strong test is a test for identical parameterization
|
|
160
|
+
* * if true, a weak equality test that allows U and V to be negated and or exchanged.
|
|
161
|
+
* * The weak test is a test for the same implicit set
|
|
162
|
+
* @returns true if identical to tolerance.
|
|
163
|
+
*/
|
|
164
|
+
isSameParabola(other, negatedAndExchangedAxesAreEqual = false) {
|
|
165
|
+
const almostEqualOrNegated = (vectorU, vectorV) => {
|
|
166
|
+
if (Geometry.isSameCoordinate(vectorU.x, vectorV.x)
|
|
167
|
+
&& Geometry.isSameCoordinate(vectorU.y, vectorV.y))
|
|
168
|
+
return 1;
|
|
169
|
+
if (Geometry.isSameCoordinate(vectorU.x, -vectorV.x)
|
|
170
|
+
&& Geometry.isSameCoordinate(vectorU.y, -vectorV.y))
|
|
171
|
+
return -1;
|
|
172
|
+
return 0;
|
|
173
|
+
};
|
|
174
|
+
if (Geometry.isSamePoint2d(this.center, other.center)) {
|
|
175
|
+
if (!negatedAndExchangedAxesAreEqual)
|
|
176
|
+
return this.vectorU.isAlmostEqualMetric(other.vectorU) && this.vectorV.isAlmostEqualMetric(other.vectorV);
|
|
177
|
+
const uuCode = almostEqualOrNegated(this.vectorU, other.vectorU);
|
|
178
|
+
const vvCode = almostEqualOrNegated(this.vectorV, other.vectorV);
|
|
179
|
+
if (uuCode !== 0 && vvCode !== 0)
|
|
180
|
+
return true;
|
|
181
|
+
const uvCode = almostEqualOrNegated(this.vectorU, other.vectorV);
|
|
182
|
+
const vuCode = almostEqualOrNegated(this.vectorV, other.vectorU);
|
|
183
|
+
if (uvCode !== 0 && vuCode !== 0)
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=UnboundedParabola2d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnboundedParabola2d.js","sourceRoot":"","sources":["../../../../../src/curve/internalContexts/geometry2d/UnboundedParabola2d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\n\r\n\r\nimport { SmallSystem } from \"../../../numerics/SmallSystem\";\r\nimport { Geometry } from \"../../../Geometry\";\r\nimport { Point2d, Vector2d } from \"../../../geometry3d/Point2dVector2d\";\r\nimport { XAndY } from \"../../../geometry3d/XYZProps\";\r\nimport { TrigPolynomial } from \"../../../numerics/Polynomials\";\r\nimport { ImplicitCurve2d } from \"./ImplicitCurve2d\";\r\n\r\n/**\r\n * Internal class for parabola in the xy plane, with an angular parameterization.\r\n * * In uv local coordinates\r\n * * Let c = cos(theta) and s = sin(theta)\r\n * * The parabola is (u,v) = (s/(1+c), (1-c)/(1+c))\r\n * * The uv derivative is (u',v') = (1/(c+1), 2s/(c+1))\r\n * * Basic trig identities confirm that u^2 = v as expected for a parabola.\r\n * * This traces the parabola in a full theta range (-2PI < theta < 2PI).\r\n * * The angle theta = 2PI is the singular point.\r\n * * In XY coordinates the mapped parabola is\r\n * * x = A + Uu + Vv\r\n * * X = A + U*s/(1+c) + V*(1-2*c/(1+c))\r\n * * X' = U * (1/(c+1) + V*2s/(c+1))\r\n * @internal\r\n */\r\nexport class UnboundedParabola2d extends ImplicitCurve2d {\r\n /** The Cartesian coordinates of any center on the line. */\r\n public center: Point2d;\r\n /** The local u axis direction. */\r\n public vectorU: Vector2d;\r\n /** The local v axis direction. */\r\n public vectorV: Vector2d;\r\n /* Constructor - CAPTURE given center and axis vectors */\r\n private constructor(center: Point2d, vectorU: Vector2d, vectorV: Vector2d) {\r\n super();\r\n this.center = center;\r\n this.vectorU = vectorU;\r\n this.vectorV = vectorV;\r\n }\r\n /** Return a clone of this Parabola. */\r\n public clone(): UnboundedParabola2d {\r\n // the create method clones the inputs\r\n return UnboundedParabola2d.createCenterAndAxisVectors(this.center, this.vectorU, this.vectorV);\r\n }\r\n /**\r\n * Create an UnboundedParabola2d from an xy object and a radius.\r\n * @param center xy coordinates of center\r\n * @param vectorU vector from center to to theta=0 vertex, i.e., along axis on the \"inside\" of the curve\r\n * @param vectorV vector from center to the transverse direction.\r\n */\r\n public static createCenterAndAxisVectors(center: XAndY, vectorU: XAndY, vectorV: XAndY): UnboundedParabola2d {\r\n return new UnboundedParabola2d(Point2d.create(center.x, center.y),\r\n Vector2d.create(vectorU.x, vectorU.y),\r\n Vector2d.create(vectorV.x, vectorV.y),\r\n );\r\n }\r\n /**\r\n * Return the local (uv) coordinate of a global point.\r\n * @param spacePoint point for coordinate conversion\r\n */\r\n public globalToLocal(spacePoint: XAndY): Vector2d | undefined {\r\n const result = Vector2d.create();\r\n if (SmallSystem.linearSystem2d(\r\n this.vectorU.x, this.vectorV.x,\r\n this.vectorU.y, this.vectorV.y,\r\n spacePoint.x - this.center.x, spacePoint.y - this.center.y,\r\n result))\r\n return result;\r\n return undefined;\r\n }\r\n /**\r\n * Returns xy coordinate on the Parabola.\r\n * @param radians parametric angle on the Parabola\r\n */\r\n public override radiansToPoint2d(radians: number): Point2d | undefined {\r\n const c = Math.cos(radians);\r\n const s = Math.sin(radians);\r\n const q = 1 + c;\r\n if (Geometry.isSmallMetricDistance(Math.abs(q)))\r\n return undefined;\r\n return this.center.plus2Scaled(this.vectorU, s / q, this.vectorV, (1 - c) / q);\r\n }\r\n /**\r\n * Returns the tangent at given radians value.\r\n * @param radians parametric angle on the parabola\r\n */\r\n public override radiansToTangentVector2d(radians: number): Vector2d | undefined {\r\n const c = Math.cos(radians);\r\n const s = Math.sin(radians);\r\n const q = 1 + c;\r\n const u = Geometry.conditionalDivideCoordinate(1, q);\r\n const v = Geometry.conditionalDivideCoordinate(2 * s, q * q);\r\n if (u === undefined || v === undefined)\r\n return undefined;\r\n return Vector2d.createAdd2Scaled(this.vectorU, u, this.vectorV, v);\r\n }\r\n /**\r\n * Return the implicit function value at xy.\r\n * @param xy space point\r\n * @returns v - u*u\r\n */\r\n public override functionValue(xy: XAndY): number {\r\n const vectorUV = this.globalToLocal(xy);\r\n if (vectorUV === undefined)\r\n return 0;\r\n return vectorUV.y - vectorUV.x * vectorUV.x;\r\n }\r\n /**\r\n * Evaluate the (global coordinates) gradient (steepest descent) of the implicit function.\r\n * @param xy space point\r\n * @returns gradient vector for the implicit function\r\n */\r\n public override gradient(xy: XAndY): Vector2d {\r\n const vectorUV = this.globalToLocal(xy);\r\n const result = Vector2d.create();\r\n // use INVERSE of TRANSPOSE of [UV] matrix to map gradient terms\r\n if (vectorUV !== undefined && SmallSystem.linearSystem2d(\r\n this.vectorU.x, this.vectorU.y,\r\n this.vectorV.x, this.vectorV.y,\r\n - 2 * vectorUV.x, 1.0,\r\n result))\r\n return result;\r\n return Vector2d.create(0, 0);\r\n }\r\n /**\r\n * Solve for parametric radians at Parabola points which are perpendicular projections of spacePoint.\r\n * * Up to 4 solutions are possible.\r\n * @param spacePoint the space point.\r\n * @handler the handler to receive all the points on the curve and radians where perpendicular happens.\r\n */\r\n public override emitPerpendiculars(\r\n spacePoint: Point2d, handler: (curvePoint: Point2d, radians: number | undefined) => any,\r\n ): void {\r\n const vectorW = Vector2d.createStartEnd(spacePoint, this.center);\r\n // vectorW is from space point to curve origin.\r\n // vector to curve at an angle theta is vectorW + (s/(1=c)) U + ((1-c)/(1-s)) V\r\n // where c and s are cosine and sine of the parameterization angle.\r\n // The dot product of the curve tangent vector with the vector from spacePoint to curve\r\n // has trig terms appearing at highest degree 2, hence is solved by the function\r\n // solveUnitCircleImplicitQuadricIntersection.\r\n const dotWU = vectorW.dotProduct(this.vectorU);\r\n const dotWV = vectorW.dotProduct(this.vectorV);\r\n const dotUU = this.vectorU.dotProduct(this.vectorU);\r\n const dotVV = this.vectorV.dotProduct(this.vectorV);\r\n const dotUV = this.vectorU.dotProduct(this.vectorV);\r\n const coff1 = dotWU;\r\n const coffC = 2 * dotWU;\r\n const coffS = 2 * dotWV + dotUU + 2 * dotVV;\r\n const coffCC = dotWU;\r\n const coffSC = 2 * dotWV + dotUU - 2 * dotVV;\r\n const coffSS = 3 * dotUV;\r\n const radiansSolutions: number[] = [];\r\n TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(coffCC, coffSC, coffSS, coffC, coffS, coff1, radiansSolutions);\r\n for (const radians of radiansSolutions) {\r\n const curvePoint = this.radiansToPoint2d(radians);\r\n if (curvePoint !== undefined)\r\n handler(curvePoint, radians);\r\n }\r\n }\r\n /** Returns true if the circle radius is near zero. */\r\n // eslint-disable-next-line @itwin/prefer-get\r\n public override isDegenerate(): boolean {\r\n return undefined === this.globalToLocal(Point2d.create(0, 0));\r\n }\r\n /**\r\n * Test if the centers and axes of the vectors are close\r\n * @param other second Parabola\r\n * @param negatedAndExchangedAxesAreEqual\r\n * * if false, a strong equality test requiring both U and V vectors to match\r\n * * This strong test is a test for identical parameterization\r\n * * if true, a weak equality test that allows U and V to be negated and or exchanged.\r\n * * The weak test is a test for the same implicit set\r\n * @returns true if identical to tolerance.\r\n */\r\n public isSameParabola(other: UnboundedParabola2d, negatedAndExchangedAxesAreEqual: boolean = false): boolean {\r\n const almostEqualOrNegated = (vectorU: Vector2d, vectorV: Vector2d): -1 | 0 | 1 => {\r\n if (Geometry.isSameCoordinate(vectorU.x, vectorV.x)\r\n && Geometry.isSameCoordinate(vectorU.y, vectorV.y))\r\n return 1;\r\n if (Geometry.isSameCoordinate(vectorU.x, -vectorV.x)\r\n && Geometry.isSameCoordinate(vectorU.y, -vectorV.y))\r\n return -1;\r\n return 0;\r\n }\r\n if (Geometry.isSamePoint2d(this.center, other.center)) {\r\n if (!negatedAndExchangedAxesAreEqual)\r\n return this.vectorU.isAlmostEqualMetric(other.vectorU) && this.vectorV.isAlmostEqualMetric(other.vectorV);\r\n const uuCode = almostEqualOrNegated(this.vectorU, other.vectorU);\r\n const vvCode = almostEqualOrNegated(this.vectorV, other.vectorV);\r\n if (uuCode !== 0 && vvCode !== 0)\r\n return true\r\n const uvCode = almostEqualOrNegated(this.vectorU, other.vectorV);\r\n const vuCode = almostEqualOrNegated(this.vectorV, other.vectorU);\r\n if (uvCode !== 0 && vuCode !== 0)\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n"]}
|
|
@@ -90,6 +90,13 @@ export declare class Point2d extends XY implements BeJSONFunctions {
|
|
|
90
90
|
* @param result optional result
|
|
91
91
|
*/
|
|
92
92
|
static create(x?: number, y?: number, result?: Point2d): Point2d;
|
|
93
|
+
/**
|
|
94
|
+
* Return a point at interpolated coordinates between two given points.
|
|
95
|
+
* @param xyA first point
|
|
96
|
+
* @param fraction interpolation fraction
|
|
97
|
+
* @param xyB second point
|
|
98
|
+
*/
|
|
99
|
+
static createInterpolated(xyA: XAndY, fraction: number, xyB: XAndY): Point2d;
|
|
93
100
|
/**
|
|
94
101
|
* Set x and y from a JSON input such as `[1,2]` or `{x:1, y:2}`
|
|
95
102
|
* * If no JSON input is provided, 0 would be used as default values for x and y.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Point2dVector2d.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Point2dVector2d.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Point2dVector2d.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Point2dVector2d.ts"],"names":[],"mappings":"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"}
|
|
@@ -193,6 +193,15 @@ export class Point2d extends XY {
|
|
|
193
193
|
}
|
|
194
194
|
return new Point2d(x, y);
|
|
195
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Return a point at interpolated coordinates between two given points.
|
|
198
|
+
* @param xyA first point
|
|
199
|
+
* @param fraction interpolation fraction
|
|
200
|
+
* @param xyB second point
|
|
201
|
+
*/
|
|
202
|
+
static createInterpolated(xyA, fraction, xyB) {
|
|
203
|
+
return new Point2d(Geometry.interpolate(xyA.x, fraction, xyB.x), Geometry.interpolate(xyA.y, fraction, xyB.y));
|
|
204
|
+
}
|
|
196
205
|
/**
|
|
197
206
|
* Set x and y from a JSON input such as `[1,2]` or `{x:1, y:2}`
|
|
198
207
|
* * If no JSON input is provided, 0 would be used as default values for x and y.
|