Point3d Class

3D point with `x`,`y`,`z` as properties

• object

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

the result is a vector
the result is perpendicular to both vectors, with right hand orientation
* the magnitude of the vector is twice the area of the triangle.

crossProductToPointsXY(pointA: Point3d, pointB: Point3d): number Return the cross product of the vectors from this to pointA and pointB

the result is a scalar
the magnitude of the vector is twice the signed area of the triangle.

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: XYAndZ, result?: Point3d): Return a point interpolated between this point and the right param.
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.
interpolatePointAndTangent(fraction: number, other: Point3d, tangentScale: number, result?: Ray3d): Return a ray whose ray.origin is interpolated, and ray.direction is the vector between points with a
scale factor applied.

interpolateXYZ(fractionX: number, fractionY: number, fractionZ: number, other: Point3d, result?: Point3d): Return a point with independent x,y,z fractional interpolation.
minus(vector: XYAndZ, result?: Point3d): Return point minus vector
plus(vector: XYAndZ, result?: Point3d): Return point plus vector
plus2Scaled(vectorA: XYAndZ, scalarA: number, vectorB: XYZ, scalarB: number, result?: Point3d): Return point + vectorA scalarA + vectorB scalarB
plus3Scaled(vectorA: XYAndZ, scalarA: number, vectorB: XYAndZ, scalarB: number, vectorC: XYAndZ, scalarC: number, result?: Point3d): Return point + vectorA scalarA + vectorB scalarB + vectorC * scalarC
plusScaled(vector: XYAndZ, 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

This is a scalar (number)
This is 6 times the (signed) volume of the tetrahedron on the 4 points.

create(x: number = 0, y: number = 0, z: number = 0, result?: Point3d): Static Create a new Point3d with given coordinates
createAdd2Scaled(pointA: XYAndZ, scaleA: number, pointB: XYAndZ, scaleB: number, result?: Point3d): Static create a point that is a linear combination (weighted sum) of 2 input points.
createAdd3Scaled(pointA: XYAndZ, scaleA: number, pointB: XYAndZ, scaleB: number, pointC: XYAndZ, scaleC: number, result?: Point3d): Static Create a point that is a linear combination (weighted sum) of 3 input points.
createFrom(data: XYAndZ | XAndY | Float64Array, result?: Point3d): Static Copy contents from another Point3d, Point2d, Vector2d, or Vector3d
createFromPacked(xyzData: Float64Array, pointIndex: number, result?: Point3d): Point3d | undefined Static Copy x,y,z from
createFromPackedXYZW(xyzData: Float64Array, pointIndex: number, result?: Point3d): Point3d | undefined Static Copy and unweight xyzw.
createScale(source: XYAndZ, 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
addScaledInPlace(other: XYAndZ, scale: number): void XYZ add (in place) the scaled x,y,z of other
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: XYAndZ): number XYZ Return the distance from this point to other
distanceSquared(other: XYAndZ): number XYZ Return squared distance from this point to other
distanceSquaredXY(other: XAndY): number XYZ Return squared XY distance from this point to other
distanceXY(other: XAndY): number XYZ Return the XY distance from this point to other
freeze(): void 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: XYAndZ, tol?: number): boolean XYZ Returns true if this and other have equal x,y,z parts within Geometry.smallMetricDistance.
isAlmostEqualMetric(other: XYAndZ): boolean XYZ equality test with Geometry.smallMetricDistance tolerance
isAlmostEqualXY(other: XAndY, 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: XYAndZ): 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: XYAndZ): 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: XYAndZ, 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.
setFrom(other: Float64Array | XAndY | XYAndZ): void XYZ Set the x,y,z parts from one of these input types

XYZ -- copy the x,y,z parts
Float64Array -- Copy from indices 0,1,2 to x,y,z
* XY -- copy the x, y parts and set z=0
setFromJSON(json?: XYZProps): void XYZ Set the x,y,z properties from one of several json forms:

array of numbers: [x,y,z]
object with x,y, and (optional) z as numeric properties {x: xValue, y: yValue, z: zValue}
setFromPoint3d(other: Point3d): 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
This is the same effect as `setFrom(other)` with no pretesting of variant input type
setZero(): void XYZ Set the x,y,z parts to zero.
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: XYAndZ, result?: Vector3d): Vector3d | undefined XYZ Return a unit vector from this vector to other.
vectorTo(other: XYAndZ, result?: Vector3d): XYZ Return a (full length) vector from this point to other
hasZ(arg: any): boolean Static XYZ Type guard to determine whether an object has a member called "z"
isXAndY(arg: any): boolean Static XYZ Type guard for XAndY.
isXYAndZ(arg: any): boolean Static XYZ Type guard for XYAndZ.

Inherited properties

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

Defined in

Last Updated: 03 June, 2019