## IndexedXYZCollection Class

• This allows algorithms to work with Point3d[] or GrowableXYZ. GrowableXYZArray implements these for its data. Point3dArrayCarrier carries a (reference to) a Point3d[] and implements the methods with calls on that array reference.
• In addition to "point by point" accessors, there abstract members compute commonly useful vector data "between points".
• Methods that create vectors among multiple indices allow callers to avoid creating temporaries.

### Methods

Name Description
accumulateCrossProductIndexIndexIndex(origin: number, indexA: number, indexB: number, result: Vector3d): void Abstract Return the cross product of vectors from origin point at `indexA` to target points at `indexB` and `indexC`
accumulateScaledXYZ(index: number, scale: number, sum: Point3d): void Abstract Accumulate scale times the x,y,z values at index.
crossProductIndexIndexIndex(origin: number, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined Abstract Return the cross product of vectors from `origin` to points at `indexA` and `indexB`
crossProductXYAndZIndexIndex(origin: XYAndZ, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined Abstract Return the cross product of the vectors from `origin` to points at `indexA` and `indexB`
cyclicIndex(i: number): number Adjust index into range by modulo with the length.
distanceIndexIndex(index0: number, index1: number): number | undefined Abstract Return distance between indicated points.
distanceSquaredIndexIndex(index0: number, index1: number): number | undefined Abstract Return distance squared between indicated points.
getPoint3dAtCheckedPointIndex(index: number, result?: Point3d): Point3d | undefined Abstract Return the point at `index` as a strongly typed Point3d.
getPoint3dAtUncheckedPointIndex(index: number, result?: Point3d): Abstract Return the point at `index` as a strongly typed Point3d, without checking the point index validity.
getRange(): Return the range of the points.
getVector3dAtCheckedVectorIndex(index: number, result?: Vector3d): Vector3d | undefined Abstract Get from `index` as a strongly typed Vector3d.
getXAtUncheckedPointIndex(pointIndex: number): number Abstract access x of indexed point
getYAtUncheckedPointIndex(pointIndex: number): number Abstract access y of indexed point
getZAtUncheckedPointIndex(pointIndex: number): number Abstract access z of indexed point
vectorIndexIndex(indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined Abstract Return a vector from the point at `indexA` to the point at `indexB`
vectorXYAndZIndex(origin: XYAndZ, indexB: number, result?: Vector3d): Vector3d | undefined Abstract Return a vector from `origin` to the point at `indexB`

### Properties

Name Type Description
length Accessor ReadOnly number read-only property for number of XYZ in the collection.
points Accessor ReadOnly Iterable<Point3d> Return iterator over the points in this collection.

### Defined in

Last Updated: 08 January, 2020