## Point3d Class

3D point with x,y,z as properties

### Methods

Name Description
constructor(x: number = 0, y: number = 0, z: number = 0): Constructor for Point3d
clone(result?: Point3d): Return a new Point3d with the same coordinates
crossProductToPoints(pointA: Point3d, pointB: Point3d, result?: Vector3d): Return the cross product of the vectors from this to pointA and pointB
crossProductToPointsMagnitude(pointA: Point3d, pointB: Point3d): number Return the magnitude of the cross product of the vectors from this to pointA and pointB
crossProductToPointsXY(pointA: Point3d, pointB: Point3d): number Return the cross product of the vectors from this to pointA and pointB
dotVectorsToTargets(targetA: Point3d, targetB: Point3d): number Return the dot product of vectors from this to pointA and this to pointB.
fractionOfProjectionToLine(startPoint: Point3d, endPoint: Point3d, defaultFraction: number = 0): number Return the fractional projection of this onto a line between points.
interpolate(fraction: number, other: Readonly<WritableXYAndZ>, result?: Point3d): Return a point interpolated between this point and the other point.
interpolatePerpendicularXY(fraction: number, pointB: Point3d, fractionXYPerp: number, result?: Point3d): Interpolate between points, then add a shift in the xy plane by a fraction of the XY projection perpendicular.
interpolateXYZ(fractionX: number, fractionY: number, fractionZ: number, other: Point3d, result?: Point3d): Return a point with independent x,y,z fractional interpolation.
minus(vector: Readonly<WritableXYAndZ>, result?: Point3d): Return point minus vector
plus(vector: Readonly<WritableXYAndZ>, result?: Point3d): Return point plus vector
plus2Scaled(vectorA: Readonly<WritableXYAndZ>, scalarA: number, vectorB: XYZ, scalarB: number, result?: Point3d): Return point + vectorA * scalarA + vectorB * scalarB
plus3Scaled(vectorA: Readonly<WritableXYAndZ>, scalarA: number, vectorB: Readonly<WritableXYAndZ>, scalarB: number, vectorC: Readonly<WritableXYAndZ>, scalarC: number, result?: Point3d): Return point + vectorA * scalarA + vectorB * scalarB + vectorC * scalarC
plusScaled(vector: Readonly<WritableXYAndZ>, scaleFactor: number, result?: Point3d): Return point + vector * scalar
plusXYZ(dx: number = 0, dy: number = 0, dz: number = 0, result?: Point3d): Return point plus vector
tripleProductToPoints(pointA: Point3d, pointB: Point3d, pointC: Point3d): number Return the triple product of the vectors from this to pointA, pointB, pointC
create(x: number = 0, y: number = 0, z: number = 0, result?: Point3d): Static Create a new Point3d with given coordinates
createAdd2Scaled(pointA: Readonly<WritableXYAndZ>, scaleA: number, pointB: Readonly<WritableXYAndZ>, scaleB: number, result?: Point3d): Static Create a point that is a linear combination (weighted sum) of 2 input points.
createAdd3Scaled(pointA: Readonly<WritableXYAndZ>, scaleA: number, pointB: Readonly<WritableXYAndZ>, scaleB: number, pointC: Readonly<WritableXYAndZ>, scaleC: number, result?: Point3d): Static Create a point that is a linear combination (weighted sum) of 3 input points.
createArrayFromPackedXYZ(data: Float64Array): Point3d[] Static Return an array of points constructed from groups of 3 entries in a Float64Array.
createFrom(data: Float64Array | Readonly<WritableXAndY> | Readonly<WritableXYAndZ>, result?: Point3d): Static Copy contents from another Point3d, Point2d, Vector2d, or Vector3d
createFromPacked(xyzData: Float64Array, pointIndex: number, result?: Point3d): undefined | Point3d Static Copy x,y,z from
createFromPackedXYZW(xyzwData: Float64Array, pointIndex: number, result?: Point3d): undefined | Point3d Static Copy and unweight xyzw.
createScale(source: Readonly<WritableXYAndZ>, scale: number, result?: Point3d): Static Return a point that is scaled from the source point.
createZero(result?: Point3d): Static Create a new point with 000 xyz
fromJSON(json?: XYZProps): Static Convert json to Point3d.

### Inherited methods

Name Inherited from Description
addXYZInPlace(dx: number = 0.0, dy: number = 0.0, dz: number = 0.0): void XYZ Add to x, y, z parts
at(index: number): number XYZ Return the x,y, z component corresponding to 0,1,2
cloneAsPoint3d(): XYZ Clone strongly typed as Point3d
distance(other: Readonly<WritableXYAndZ>): number XYZ Return the distance from this point to other
distanceSquared(other: Readonly<WritableXYAndZ>): number XYZ Return squared distance from this point to other
distanceSquaredXY(other: Readonly<WritableXAndY>): number XYZ Return squared XY distance from this point to other
distanceXY(other: Readonly<WritableXAndY>): number XYZ Return the XY distance from this point to other
freeze(): Readonly<Point3d> XYZ Freeze this XYZ
indexOfMaxAbs(): number XYZ Return the index (0,1,2) of the x,y,z component with largest absolute value
isAlmostEqual(other: Readonly<Readonly<WritableXYAndZ>>, tol?: number): boolean XYZ Returns true if this and other have equal x,y,z parts within Geometry.smallMetricDistance.
isAlmostEqualMetric(other: Readonly<WritableXYAndZ>): boolean XYZ Equality test with Geometry.smallMetricDistance tolerance
isAlmostEqualPointPlusScaledVector(other: Readonly<WritableXYAndZ>, vector: Readonly<WritableXYAndZ>, scale: number, tol?: number): boolean XYZ Return true if this and {other + vector*scale} have equal x,y,z parts within Geometry.smallMetricDistance.
isAlmostEqualXY(other: Readonly<WritableXAndY>, tol?: number): boolean XYZ Return true if this and other have equal x,y parts within Geometry.smallMetricDistance.
isAlmostEqualXYZ(x: number, y: number, z: number, tol?: number): boolean XYZ Return true if this and other have equal x,y,z parts within Geometry.smallMetricDistance.
isExactEqual(other: Readonly<WritableXYAndZ>): boolean XYZ Exact equality test.
magnitude(): number XYZ Return the sqrt of the sum of squared x,y,z parts
magnitudeSquared(): number XYZ Return the sum of squared x,y,z parts
magnitudeSquaredXY(): number XYZ Return the sum of squared x,y parts
magnitudeXY(): number XYZ Return sqrt of the sum of squared x,y parts
maxAbs(): number XYZ Return the largest absolute value of any component
maxDiff(other: Readonly<WritableXYAndZ>): number XYZ Return the largest absolute distance between corresponding components
scaleInPlace(scale: number): void XYZ Multiply the x, y, z parts by scale.
scaledVectorTo(other: Readonly<WritableXYAndZ>, scale: number, result?: Vector3d): XYZ Return a multiple of a the (full length) vector from this point to other
set(x: number = 0, y: number = 0, z: number = 0): void XYZ Set the x,y,z parts.
setAt(index: number, value: number): void XYZ Set value at index 0 or 1 or 2
setFrom(other: undefined | Float64Array | Readonly<WritableXAndY> | Readonly<WritableXYAndZ>): void XYZ Set the x,y,z parts from one of these input types
setFromJSON(json?: XYZProps): void XYZ Set the x,y,z properties from one of several json forms:
setFromPoint3d(other?: Readonly<WritableXYAndZ>): void XYZ Set the x,y,z parts from a Point3d.
setFromVector3d(other?: Vector3d): void XYZ Set the x,y,z parts from a Vector3d
setZero(): void XYZ Set the x,y,z parts to zero.
toArray(): number[] XYZ Return as an array [x,y,z]
toFloat64Array(): Float64Array XYZ Pack the x,y,z values in a Float64Array.
toJSON(): XYZ Return a JSON object as array [x,y,z]
toJSONXYZ(): XYZ Return a JSON object as key value pairs {x: value, y: value, z: value}
unitVectorTo(target: Readonly<WritableXYAndZ>, result?: Vector3d): undefined | Vector3d XYZ Return a unit vector from this vector to other.
vectorTo(other: Readonly<WritableXYAndZ>, result?: Vector3d): XYZ Return a (full length) vector from this point to other
accessX(arg: any, defaultValue?: number): undefined | number Static XYZ Look for (in order) an x coordinate present as:
accessY(arg: any, defaultValue?: number): undefined | number Static XYZ Look for (in order) an x coordinate present as:
accessZ(arg: any, defaultValue?: number): undefined | number Static XYZ Look for (in order) an x coordinate present as:
hasZ(arg: any): arg is Readonly<WriteableHasZ> Static XYZ Type guard to determine whether an object has a member called "z"
isAnyImmediatePointType(arg: any): arg is number[] | Readonly<WritableXAndY> | Readonly<WritableXYAndZ> Static XYZ Test if arg is any of:
isXAndY(arg: any): arg is Readonly<WritableXAndY> Static XYZ Type guard for XAndY.
isXYAndZ(arg: any): arg is Readonly<WritableXYAndZ> Static XYZ Type guard for XYAndZ.
x(xyz: undefined | XYZProps, defaultValue: number = 0): number Static XYZ Access x part of XYZProps (which may be .x or [0])
y(xyz: undefined | XYZProps, defaultValue: number = 0): number Static XYZ Access x part of XYZProps (which may be .x or [0])
z(xyz: undefined | XYZProps, defaultValue: number = 0): number Static XYZ Access x part of XYZProps (which may be .x or [0])

### Inherited properties

Name Type Inherited from Description
isAlmostZero Accessor ReadOnly boolean XYZ Return true if the x,y,z components are all nearly zero to tolerance Geometry.smallMetricDistance
isZero Accessor ReadOnly boolean XYZ Return true if the x,y,z components are all exactly zero
x number XYZ x coordinate
y number XYZ y coordinate
z number XYZ z coordinate

### Defined in

Last Updated: 26 February, 2024