Point3d Class

3D point with x,y,z as properties

Extends

Implements

  • object

Methods

Name Description
constructor(x: number = 0, y: number = 0, z: number = 0): Point3d Constructor for Point3d  
clone(result?: Point3d): Point3d Return a new Point3d with the same coordinates  
crossProductToPoints(pointA: Point3d, pointB: Point3d, result?: Vector3d): 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.
 
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

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): Point3d Return a point interpolated between this point and the right param.  
interpolatePerpendicularXY(fraction: number, pointB: Point3d, fractionXYPerp: number, result?: Point3d): 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): 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): Point3d Return a point with independent x,y,z fractional interpolation.  
minus(vector: XYAndZ, result?: Point3d): Point3d Return point minus vector  
plus(vector: XYAndZ, result?: Point3d): Point3d Return point plus vector  
plus2Scaled(vectorA: XYAndZ, scalarA: number, vectorB: XYZ, scalarB: number, result?: Point3d): Point3d Return point + vectorA scalarA + vectorB scalarB  
plus3Scaled(vectorA: XYAndZ, scalarA: number, vectorB: XYAndZ, scalarB: number, vectorC: XYAndZ, scalarC: number, result?: Point3d): Point3d Return point + vectorA scalarA + vectorB scalarB + vectorC * scalarC  
plusScaled(vector: XYAndZ, scaleFactor: number, result?: Point3d): Point3d Return point + vector * scalar  
plusXYZ(dx: number = 0, dy: number = 0, dz: number = 0, result?: Point3d): 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): Point3d Static Create a new Point3d with given coordinates  
createAdd2Scaled(pointA: XYAndZ, scaleA: number, pointB: XYAndZ, scaleB: number, result?: Point3d): 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): Point3d Static Create a point that is a linear combination (weighted sum) of 3 input points.  
createFrom(data: XYAndZ | XAndY | Float64Array, result?: Point3d): 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): Point3d Static Return a point that is scaled from the source point.  
createZero(result?: Point3d): Point3d Static Create a new point with 000 xyz  
fromJSON(json?: XYZProps): Point3d Static Convert json to Point3d.  

Inherited methods

Name Inherited from Description
addInPlace(other: XYAndZ): void XYZ add x,y,z from other in place.
addScaledInPlace(other: XYAndZ, scale: number): void XYZ add (in place) the scaled x,y,z of other
addXYZInPlace(dx: number = 0, dy: number = 0, dz: number = 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(): Point3d 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): 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 | undefined): 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?: XYAndZ): 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.
subtractInPlace(other: XYAndZ): void XYZ add x,y,z from other in place.
toFloat64Array(): Float64Array XYZ Pack the x,y,z values in a Float64Array.
toJSON(): XYZProps XYZ Return a JSON object as array [x,y,z]
toJSONXYZ(): XYZProps 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): Vector3d XYZ Return a (full length) vector from this point to other
accessX(arg: any, defaultValue?: number): number | undefined Static XYZ Look for (in order) an x coordinate present as:
arg.x
arg[0]
accessY(arg: any, defaultValue?: number): number | undefined Static XYZ Look for (in order) an x coordinate present as:
arg.y
arg[1]
accessZ(arg: any, defaultValue?: number): number | undefined Static XYZ Look for (in order) an x coordinate present as:
arg.z
arg[2]
hasZ(arg: any): boolean Static XYZ Type guard to determine whether an object has a member called "z"
isAnyImmediatePointType(arg: any): boolean Static XYZ Test if arg is any of:
XAndY
XYAndZ
[number,number]
[number,number,number]
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: 08 January, 2020