e958508 Sep 11, 2019
1 contributor

### Users who have contributed to this file

64 lines (53 sloc) 4.2 KB

# 1.4.0 Change Notes

## Geometry

### Summary

• New class `CurveFactory` to hold future static methods that construct multi-component curves.
• First method: CurveFactory.createFilletsInLineString
• `PolyfaceBuilder` static method to build xy triangulation of array of points.
• `PolyfaceClip` static method to compute cut-fill between 2.5D meshes.

### Details

• `Arc3d`
• (static) `Arc3d.createFilletArc(point0: Point3d, point1: Point3d, point2: Point3d, radius: number): ArcBlendData;`
• Create (if possible) a single arc that is a fillet between line segment from `point0` to `point` and `point1` to `point`.
• Annotated return with fractional position of tangent, fractions from middle point outward along segments.
• `point1` (middle points) is commonly called the PI (point of inflection) for the linestring being filleted.
• See new support interface `ArcBlendData`
• `CurveFactory`
• (static) `CurveFactory.createFilletsInLineString(points: LineString3d | IndexedXYZCollection | Point3d[], radius: number, allowBackupAlongEdge?: boolean): Path | undefined;`
• Create a path with alternating lines and tangent arcs.
• `CurveCollection`
• (static) `static createCurveLocationDetailOnAnyCurvePrimitive(source: GeometryQuery | undefined, fraction?: number): CurveLocationDetail | undefined;`
• Find any curve primitive in the collection. Evaluate it at a fractional position.
• `CurveCurve`
• (static) `CurveCurve.intersectionXYPairs(geometryA: GeometryQuery, extendA: boolean, geometryB: GeometryQuery, extendB: boolean): CurveLocationDetailPair[]`
• Same as existing (deprecated) `CurveCurve.intersectionXY`, but bundles pairs of `CurveLocationDetailPair` in single array more useful for processing.
• `Point3dArray`
• (static) `Point3dArray.static computeConvexHullXY(points: Point3d[], hullPoints: Point3d[], insidePoints: Point3d[], addClosurePoint?: boolean): void;`
• Return `hullPoints` in CCW order around the hull
• Return all non-hull points in `insidePoints`
• `PolyfaceBuilder`
• (static) `PolyfaceBuilder.pointsToTriangulatedPolyface(points: Point3d[]): IndexedPolyface | undefined;`
• Return triangulated mesh within the convex hull around the points.
• `PolyfaceClip`
• (static)
• `ClipPlane` and `ConvexClipPlaneSet` support
• `myClipPlane.convexPolygonSplitInsideOutsideGrowableArrays(xyz: GrowableXYZArray, xyzIn: GrowableXYZArray, xyzOut: GrowableXYZArray, altitudeRange: Range1d): void;`
• Split a polygon across a plane; optimized for `GrowableXYZArray` storage.
• (static) `ClipPlane.createNormalAndPointXYZXYZ(normalX: number, normalY: number, normalZ: number, originX: number, originY: number, originZ: number, invisible?: boolean, interior?: boolean, result?: ClipPlane): ClipPlane | undefined;`
• (preexisting) added optional `result` parameter
• `Ray3d`
• `interval = myRay.intersectionWithRange3d(range: Range3d, result?: Range1d): Range1d`
• return fractions (along the ray `myRay`) where the `myRay` enters and exits a `Range3d`, or null `Range1d` if no in intersection.

## Authorization Changes

### Changes to Agent authorization

OidcAgentClient now implements IAuthorizationClient. The following methods are now marked deprecated -

The access token is now stored in the client, and can be accessed by calling OidcAgentClient.getAccessToken. This method validates and refreshes the token as necessary.

### Swapping backend authorization to use agents

The API now allows swapping the authorization client used for backend operations like downloading a briefcase or change sets of an iModel. Set IModelHost.authorizationClient to the required authorization client - e.g., an instance of OidcAgentClient.

You can’t perform that action at this time.