Transform Class
A transform is an origin and a Matrix3d.
- This describes a coordinate frame with this origin, with the columns of the Matrix3d being the local x,y,z axis directions.
- Beware that for common transformations (e.g. scale about point, rotate around line, mirror across a plane) the "fixed point" that is used when describing the transform is NOT the "origin" stored in the transform. Setup methods (e.g createFixedPointAndMatrix, createScaleAboutPoint) take care of determining the appropriate origin coordinates.
Implements
Methods
Name | Description | |
---|---|---|
clone(result?: Transform): Transform | Copy the contents of this transform into a new Transform (or to the result, if specified). | |
cloneRigid(axisOrder: AxisOrder = AxisOrder.XYZ): undefined | Transform | Return a copy of this Transform, modified so that its axes are rigid | |
computeCachedInverse(useCached: boolean = true): boolean | * Compute (if needed) the inverse of the matrix part, thereby ensuring inverse operations can complete. | |
freeze(): Readonly<Transform> | Freeze this instance (and its members) so it is read-only | |
getOrigin(): Point3d | return a (clone of) the origin part of the transform, as a Point3d | |
getTranslation(): Vector3d | return a (clone of) the origin part of the transform, as a Vector3d | |
inverse(): undefined | Transform | * Return a Transform which is the inverse of this transform. | |
isAlmostEqual(other: Readonly<Transform>): boolean | Test for near equality with other Transform. | |
isAlmostEqualAllowZRotation(other: Transform): boolean | Test for near equality with other Transform. | |
multiplyComponentXYZ(componentIndex: number, x: number, y: number, z: number = 0): number | Multiply a specific row of the transform times xyz. | |
multiplyComponentXYZW(componentIndex: number, x: number, y: number, z: number, w: number): number | Multiply a specific row of the transform times (weighted!) xyzw. | |
multiplyInversePoint3d(point: Readonly<WritableXYAndZ>, result?: Point3d): undefined | Point3d | Return product of the transform's inverse times a point. | |
multiplyInversePoint3dArray(source: Point3d[], result?: Point3d[]): undefined | Point3d[] | * for each point: multiply transform * point | |
multiplyInversePoint3dArrayInPlace(source: Point3d[]): boolean | * for each point in source: multiply transformInverse * point in place in the point. | |
multiplyInversePoint4d(weightedPoint: Point4d, result?: Point4d): undefined | Point4d | Inverse transform the input homogeneous point. | |
multiplyInverseXYZ(x: number, y: number, z: number, result?: Point3d): undefined | Point3d | Return product of the transform's inverse times a point (point given as x,y,z) | |
multiplyPoint2d(source: Readonly<WritableXAndY>, result?: Point2d): Point2d | Transform the input 2d point. | |
multiplyPoint2dArray(source: Point2d[], result?: Point2d[]): Point2d[] | * for each point: multiply transform * point | |
multiplyPoint3d(point: Readonly<WritableXYAndZ>, result?: Point3d): Point3d | Transform the input 3d point. | |
multiplyPoint3dArray(source: Point3d[], result?: Point3d[]): Point3d[] | * for each point: multiply transform * point | |
multiplyPoint3dArrayArrayInPlace(chains: Point3d[][]): void | for each point: replace point by Transform*point | |
multiplyPoint3dArrayInPlace(points: Point3d[]): void | for each point: replace point by Transform*point | |
multiplyRange(range: Range3d, result?: Range3d): Range3d | Return the range of the transformed corners. | |
multiplyTransformMatrix3d(other: Matrix3d, result?: Transform): Transform | multiply this Transform times other Matrix3d, with other considered to be a Transform with 0 translation. | |
multiplyTransformTransform(other: Transform, result?: Transform): Transform | multiply this Transform times other Transform. | |
multiplyTransposeXYZW(x: number, y: number, z: number, w: number, result?: Point4d): Point4d | Multiply the transposed transform (as 4x4 with 0001 row) by Point4d given as xyzw.. | |
multiplyVector(vector: Vector3d, result?: Vector3d): Vector3d | Multiply the vector by the Matrix3d part of the transform. | |
multiplyVectorInPlace(vector: Vector3d): void | Multiply the vector in place by the Matrix3d part of the transform. | |
multiplyVectorXYZ(x: number, y: number, z: number, result?: Vector3d): Vector3d | Multiply the vector (x,y,z) by the Matrix3d part of the transform. | |
multiplyXYAndZInPlace(point: Readonly<WritableXYAndZ>): void | Transform the input object with x,y,z members | |
multiplyXYZ(x: number, y: number, z: number = 0, result?: Point3d): Point3d | Transform the input point. | |
multiplyXYZToFloat64Array(x: number, y: number, z: number, result?: Float64Array): Float64Array | Transform the input homogeneous point. | |
multiplyXYZW(x: number, y: number, z: number, w: number, result?: Point4d): Point4d | Transform the input homogeneous point. | |
multiplyXYZWToFloat64Array(x: number, y: number, z: number, w: number, result?: Float64Array): Float64Array | Transform the input homogeneous point. | |
setFrom(other: Transform): void | Copy contents from other Transform into this Transform | |
setFromJSON(json?: Transform | TransformProps): void | Set this Transform instance from flexible inputs: | |
setIdentity(): void | Set this Transform to be an identity. | |
setMultiplyTransformTransform(transformA: Transform, transformB: Transform): void | multiply transformA * transformB, store to calling instance. | |
setOriginAndMatrixColumns(origin: undefined | XYZ, vectorX: undefined | Vector3d, vectorY: undefined | Vector3d, vectorZ: undefined | Vector3d): void | Reinitialize by directly installing origin and columns of the matrix | |
toJSON(): TransformProps | Return a 3 by 4 matrix containing the rows of this Transform | |
toRows(): number[][] | Return a 3 by 4 matrix containing the rows of this Transform | |
createFixedPointAndMatrix(fixedPoint: undefined | Readonly<WritableXYAndZ>, matrix: Matrix3d, result?: Transform): Transform Static | Create a transform with the specified matrix. | |
createIdentity(result?: Transform): Transform Static | Return an identity transform, optionally filling existing transform. | |
createMatrixPickupPutdown(matrix: Matrix3d, pointA: Point3d, pointB: Point3d, result?: Transform): Transform Static | Create a transform with the specified matrix, acting on any pointX via |
|
createOriginAndMatrix(origin: undefined | XYZ, matrix: undefined | Matrix3d, result?: Transform): Transform Static | Create by directly installing origin and matrix | |
createOriginAndMatrixColumns(origin: XYZ, vectorX: Vector3d, vectorY: Vector3d, vectorZ: Vector3d, result?: Transform): Transform Static | Create by directly installing origin and columns of the matrix | |
createRefs(origin: undefined | XYZ, matrix: Matrix3d, result?: Transform): Transform Static | Create a copy with the given origin and matrix captured as the Transform origin and Matrix3d. | |
createRigidFromOriginAndColumns(origin: undefined | XYZ, vectorX: Vector3d, vectorY: Vector3d, axisOrder: AxisOrder, result?: Transform): undefined | Transform Static | Create by with matrix from Matrix3d.createRigidFromColumns. | |
createRowValues(qxx: number, qxy: number, qxz: number, ax: number, qyx: number, qyy: number, qyz: number, ay: number, qzx: number, qzy: number, qzz: number, az: number, result?: Transform): Transform Static | Create a transform with complete contents given | |
createScaleAboutPoint(fixedPoint: Point3d, scale: number, result?: Transform): Transform Static | Create a Transform which leaves the fixedPoint unchanged and | |
createTranslation(translation: XYZ, result?: Transform): Transform Static | Create a matrix with specified translation part. | |
createTranslationXYZ(x: number = 0, y: number = 0, z: number = 0, result?: Transform): Transform Static | create a Transform with translation provided by x,y,z parts. | |
createZero(result?: Transform): Transform Static | Create a transform with all zeros. | |
fromJSON(json?: TransformProps): Transform Static | Return a new Transform initialized by setFromJSON (json) |
|
initFromRange(min: Point3d, max: Point3d, npcToGlobal?: Transform, globalToNpc?: Transform): void Static | Initialize transforms that map each direction of a box (axis aligned) to [0,1] . |
|
matchArrayLengths(source: any[], dest: any[], constructionFunction: () => any): number Static | * If destination has more values than source, remove the extras. |
Properties
Name | Type | Description | |
---|---|---|---|
identity Accessor StaticReadOnly | Transform | The identity Transform. | |
isIdentity Accessor ReadOnly | boolean | test if the transform has 000 origin and identity Matrix3d | |
matrix Accessor ReadOnly | Matrix3d | Return a reference to the matrix within the transform. | |
origin Accessor ReadOnly | XYZ | Return a reference to the origin within the transform. |
Defined in
- geometry3d/Transform.ts Line 30
Last Updated: 30 November, 2023