Transform Structure 
This is parallel to C++ ON_Xform.
Namespace: Rhino.Geometry
The Transform type exposes the following members.
Name  Description  

Transform(Double) 
Initializes a new transform matrix with a specified value along the diagonal.
 
Transform(Transform) 
Initializes a new transform matrix with a specified value.

Name  Description  

Determinant 
The determinant of this 4x4 matrix.
 
Identity 
Gets a new identity transform matrix. An identity matrix defines no transformation.
 
IsAffine 
Tests for 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.
 
IsIdentity  Return true if this Transform is the identity transform  
IsLinear 
Tests for a linear transformation.
A transformation is affine if it is valid and its last row is [0, 0, 0, 1].
If in addition its last column is ( 0, 0, 0, 1)^T then it is linear.
An affine transformation can be broken into a linear transformation and a translation.
 
IsRotation 
Returns true if this is a proper rotation.
 
IsValid 
Gets a value indicating whether or not this Transform is a valid matrix.
A valid transform matrix is not allowed to have any invalid numbers.
 
IsZero 
True if matrix is Zero4x4, ZeroTransformation, or some other type of
zero. The value xform[3][3] can be anything.
 
IsZero4x4 
True if all values are 0
 
IsZeroTransformation 
True if all values are 0, except for M33 which is 1.
 
Item 
Gets or sets the matrix value at the given row and column indices.
 
M00  Gets or sets this[0,0].  
M01  Gets or sets this[0,1].  
M02  Gets or sets this[0,2].  
M03  Gets or sets this[0,3].  
M10  Gets or sets this[1,0].  
M11  Gets or sets this[1,1].  
M12  Gets or sets this[1,2].  
M13  Gets or sets this[1,3].  
M20  Gets or sets this[2,0].  
M21  Gets or sets this[2,1].  
M22  Gets or sets this[2,2].  
M23  Gets or sets this[2,3].  
M30  Gets or sets this[3,0].  
M31  Gets or sets this[3,1].  
M32  Gets or sets this[3,2].  
M33  Gets or sets this[3,3].  
RigidType 
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.
 
SimilarityType 
Gets a value indicating whether or not the Transform maintains similarity.
The easiest way to think of Similarity is that any circle, when transformed,
remains a circle. Whereas a nonsimilarity Transform deforms circles into ellipses.
 
Unset 
Gets an XForm filled with RhinoMath.UnsetValue.
 
ZeroTransformation 
ZeroTransformation diagonal = (0,0,0,1)

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.

Name  Description  

Equality 
Determines if two transformations are equal in value.
 
Inequality 
Determines if two transformations are different in value.
 
Multiply(Transform, Point3d) 
Multiplies a transformation by a point and gets a new point.
 
Multiply(Transform, Transform) 
Multiplies (combines) two transformations.
 
Multiply(Transform, Vector3d) 
Multiplies a transformation by a vector and gets a new vector.
