Transform Methods 
The Transform type exposes the following members.
Name  Description  

Affineize 
Replaces the last row with (0 0 0 1), discarding any perspective part of this transform
 
ChangeBasis(Plane, Plane) 
Computes a change of basis transformation. A basis change is essentially a remapping
of geometry from one coordinate system to another.
 
ChangeBasis(Vector3d, Vector3d, Vector3d, Vector3d, Vector3d, Vector3d) 
Computes a change of basis transformation. A basis change is essentially a remapping
of geometry from one coordinate system to another.
 
Clone 
Returns a deep copy of the transform. For languages that treat structures as value types, this can
be accomplished by a simple assignment.
 
CompareTo 
Compares this transform with another transform.
M33 has highest value, then M32, etc..  
DecomposeAffine(Transform, Vector3d) 
Decomposes an affine transformation.
A transformation is affine if it is valid and its last row is [0, 0, 0, 1].
An affine transformation can be broken into a linear transformation and a translation.
Note, a perspective transformation is not affine.
 
DecomposeAffine(Vector3d, Transform) 
Decomposes an affine transformation.
A transformation is affine if it is valid and its last row is [0, 0, 0, 1].
An affine transformation can be broken into a linear transformation and a translation.
Note, a perspective transformation is not affine.
 
DecomposeAffine(Vector3d, Transform, Transform, Vector3d) 
An affine transformation can be decomposed into a Symmetric, Rotation and Translation.
Then the Symmetric component may be further decomposed as nonuniform scale in an orthonormal
coordinate system.
 
DecomposeRigid 
Decomposes a rigid transformation. The transformation must be affine.
 
DecomposeSimilarity 
Decomposes a similarity transformation. The transformation must be affine.
A similarity transformation can be broken into a sequence of a dilation, translation, rotation, and a reflection.
 
DecomposeSymmetric 
A Symmetric linear transformation can be decomposed A = Q * Diag * Q ^ T, where Diag is a diagonal
transformation. Diag[i][i] is an eigenvalue of A and the ith column of Q is a corresponding
unit length eigenvector. Note, this transformation must be Linear and Symmetric.
 
Diagonal(Vector3d) 
Constructs a new transformation with diagonal (d0,d1,d2,1.0).
 
Diagonal(Double, Double, Double) 
Constructs a new transformation with diagonal (d0,d1,d2,1.0).
 
Equals(Object) 
Determines if another object is a transform and its value equals this transform value.
(Overrides ValueTypeEquals(Object).)  
Equals(Transform) 
Determines if another transform equals this transform value.
 
GetEulerZYZ 
Find the Euler angles for a rotation transformation.
 
GetHashCode 
Gets a nonunique hashing code for this transform.
(Overrides ValueTypeGetHashCode.)  
GetQuaternion 
If this transform is a proper rotation, then find the eqivalent quaternion.
 
GetType  Gets the Type of the current instance. (Inherited from Object.)  
GetYawPitchRoll 
Find the TaitByran angles (also loosely called Euler angles) for a rotation transformation.
 
IsRigid 
Gets a value indicating whether or not the Transform is rigid.
A rigid transformation can be broken into a proper rotation and a translation,
while an isometry transformation could also include a reflection.
 
IsSimilarity 
Gets a value indicating whether or not the Transform maintains similarity.
A similarity transformation can be broken into a sequence of a dilation, translation, rotation, and a reflection.
 
IsZeroTransformationWithTolerance 
True if all values are 0 within tolerance, except for M33 which is exactly 1.
 
Linearize 
Affinitize() and replaces the last column with (0 0 0 1)^T, discarding any translation part of this transform.
 
Mirror(Plane) 
Constructs a new Mirror transformation.
 
Mirror(Point3d, Vector3d) 
Create mirror transformation matrix
The mirror transform maps a point Q to
Q  (2*(QP)oN)*N, where
P = pointOnMirrorPlane and N = normalToMirrorPlane.
 
Multiply 
Multiplies (combines) two transformations.
This is the same as the * operator between two transformations.  
Orthogonalize 
Force the linear part of this transformation to be a rotation (or a rotation with reflection).
Use DecomposeRigid(T,R) to find the nearest rotation.
 
PlanarProjection 
Constructs a projection transformation.
 
PlaneToPlane 
Create a rotation transformation that orients plane0 to plane1. If you want to orient objects from
one plane to another, use this form of transformation.
 
ProjectAlong 
Construct a projection onto a plane along a specific direction.
 
Rotation(Double, Point3d) 
Constructs a new rotation transformation with specified angle and rotation center. The axis of rotation is ZAxis.
 
Rotation(Double, Vector3d, Point3d) 
Constructs a new rotation transformation with specified angle, rotation center and rotation axis.
 
Rotation(Vector3d, Vector3d, Point3d) 
Constructs a new rotation transformation with start and end directions and rotation center.
 
Rotation(Double, Double, Vector3d, Point3d) 
Constructs a new rotation transformation with specified angle, rotation center and rotation axis.
 
Rotation(Vector3d, Vector3d, Vector3d, Vector3d, Vector3d, Vector3d) 
Constructs a transformation that maps X0 to X1, Y0 to Y1, Z0 to Z1.
The frames should be right hand orthonormal frames (unit vectors with Z = X x Y).
The resulting rotation fixes the origin (0,0,0), maps initial X to final X,
initial Y to final Y, and initial Z to final Z.
 
RotationZYX 
Create rotation transformation From TaitByran angles (also loosely known as Euler angles).
 
RotationZYZ 
Create rotation transformation From Euler angles.
 
Scale(Point3d, Double) 
Constructs a new uniform scaling transformation with a specified scaling anchor point.
 
Scale(Plane, Double, Double, Double) 
Constructs a new nonuniform scaling transformation with a specified scaling anchor point.
 
Shear 
Constructs a Shear transformation.
 
ToFloatArray 
Return the matrix as a linear array of 16 float values
 
ToString 
Returns a string representation of this transform.
(Overrides ValueTypeToString.)  
TransformBoundingBox 
Computes a new bounding box that is the smallest axis aligned
bounding box that contains the transformed result of its 8 original corner
points.
 
TransformList 
Given a list, an array or any enumerable set of points, computes a new array of transformed points.
 
Translation(Vector3d) 
Constructs a new translation (move) transformation.
 
Translation(Double, Double, Double) 
Constructs a new translation (move) transformation.
Right column is (dx, dy, dz, 1.0).
 
Transpose 
Flip row/column values
 
TryGetInverse 
Attempts to get the inverse transform of this transform.
