The VERT_T3D function transforms a 3-D array by a 4x4 transformation matrix. The 3-D points are typically an array of polygon vertices that were generated by SHADE_VOLUME or MESH_OBJ.
This routine is written in the IDL language. Its source code can be found in the file vert_t3d.pro in the lib subdirectory of the IDL distribution.
Examples
Transform four points representing a square in the x-y plane by first translating +2.0 in the positive X direction, and then rotating 60.0 degrees about the Y axis.
points = [[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], $
[1.0, 1.0, 0.0], [0.0, 1.0, 0.0]]
T3D, /RESET
T3D, TRANSLATE=[2.0, 0.0, 0.0]
T3D, ROTATE=[0.0, 60.0, 0.0]
points = VERT_T3D(points)
Syntax
Result = VERT_T3D( Vertex_List [, DOUBLE=value] [, MATRIX=4x4_array] [, /NO_COPY] [, /NO_DIVIDE [, SAVE_DIVIDE=variable] )
Return Value
Returns the single- or double-precision coordinates of the transformed array.
Arguments
Vertex_List
A 3 x n array of 3-D coordinates to transform.
Keywords
DOUBLE
Set this keyword to a non-zero value to indicate that the returned coordinates should be double-precision. If this keyword is not set, the default is to return single-precision coordinates (unless double-precision arguments are input, in which case the DOUBLE keyword is implied to be non-zero).
MATRIX
The 4x4 transformation matrix to use. The default is to use the system viewing matrix (!P.T).
NO_COPY
Normally, a copy of Vertex_list is transformed and the original Vertex_list is preserved. If NO_COPY is set, however, then the original Vertex_List will be undefined after the call to VERT_T3D. Using the NO_COPY requires less memory.
NO_DIVIDE
Normally, when a [x, y, z, 1] vector is transformed by a 4x4 matrix, the final homogeneous coordinates are obtained by dividing the x, y, and z components of the result vector by the fourth element in the result vector. Setting the NO_DIVIDE keyword will prevent VERT_T3D from performing this division. In some cases (usually when a perspective transformation is involved) the fourth element in the result vector can be very close to (or equal to) zero.
SAVE_DIVIDE
Set this keyword to a named variable that will hold receive the fourth element of the transformed vector(s). If Vertex_list is a vector then SAVE_DIVIDE is a scalar. If Vertex_list is an array then SAVE_DIVIDE is an array of n elements. This keyword only has effect when the NO_DIVIDE keyword is set.
Version History
See Also