API Reference > geometry-core > CartesianGeometry > Point3d Point3d Class 3D point with x,y,z as properties Extends XYZ 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 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): 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 interpolateXYZ(fractionX: number, fractionY: number, fractionZ: number, other: Point3d, result?: Point3d): Point3d Return a point with independent x,y,z fractional interpolation. minus(vector: Readonly<WritableXYAndZ>, result?: Point3d): Point3d Return point minus vector plus(vector: Readonly<WritableXYAndZ>, result?: Point3d): Point3d Return point plus vector plus2Scaled(vectorA: Readonly<WritableXYAndZ>, scalarA: number, vectorB: XYZ, scalarB: number, result?: Point3d): 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): Point3d Return point + vectorA * scalarA + vectorB * scalarB + vectorC * scalarC plusScaled(vector: Readonly<WritableXYAndZ>, 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 create(x: number = 0, y: number = 0, z: number = 0, result?: Point3d): Point3d Static Create a new Point3d with given coordinates createAdd2Scaled(pointA: Readonly<WritableXYAndZ>, scaleA: number, pointB: Readonly<WritableXYAndZ>, scaleB: number, result?: Point3d): 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): 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): 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(xyzData: Float64Array, pointIndex: number, result?: Point3d): undefined | Point3d Static Copy and unweight xyzw. createScale(source: Readonly<WritableXYAndZ>, 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: Readonly<WritableXYAndZ>): void XYZ add x,y,z from other in place. addScaledInPlace(other: Readonly<WritableXYAndZ>, scale: number): void XYZ add (in place) the scaled x,y,z of other 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(): Point3d 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<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 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): 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 Return the x,y, z component corresponding to 0,1,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. subtractInPlace(other: Readonly<WritableXYAndZ>): void XYZ add x,y,z from other in place. toArray(): number[] XYZ Return as an array [x,y,z] 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: Readonly<WritableXYAndZ>, result?: Vector3d): undefined | Vector3d XYZ Return a unit vector from this vector to other. vectorTo(other: Readonly<WritableXYAndZ>, result?: Vector3d): 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): boolean 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 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 geometry3d/Point3dVector3d.ts Line 336 Last Updated: 11 June, 2024