1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<HTML> 3<HEAD> 4<META http-equiv="Content-Type" content="text/html; charset=windows-1252"> 5<META name="Author" content="Leona"> 6<META name="GENERATOR" content="Microsoft FrontPage 5.0"> 7<META http-equiv="Content-Style-Type" content="text/css"> 8<LINK rel="stylesheet" type="text/css" href="../CSS/revolution.css"> 9<TITLE><STRONG><EM><CODE>mtx</CODE></EM></STRONG></TITLE> 10</HEAD> 11<BODY> 12<H1>Matrix-Vector (MTX) Library API Function List</H1> 13<H2><A name="General">General</A></H2> 14<TABLE border="1"> 15 <TBODY> 16 <TR> 17<TD><A href="../mtx/general/MTXConcat.html">MTXConcat</A></TD> 18<TD>Multiplies matrices a and b and stores the result in ab.</TD> 19 </TR> 20 <TR> 21<TD><A href="../mtx/general/MTXConcatArray.html">MTXConcatArray</A></TD> 22<TD>Performs matrix concatenation for arrays.</TD> 23 </TR> 24 <TR> 25<TD><A href="../mtx/general/MTXCopy.html">MTXCopy</A></TD> 26<TD>Copies the contents of src into dst.</TD> 27 </TR> 28 <TR> 29<TD><A href="../mtx/general/MTXIdentity.html">MTXIdentity</A></TD> 30<TD>Sets matrix m as an identity matrix.</TD> 31 </TR> 32 <TR> 33<TD><A href="../mtx/general/MTXInverse.html">MTXInverse</A></TD> 34<TD>Generates the inverse of a 3x4 matrix at high speed.</TD> 35 </TR> 36 <TR> 37<TD><A href="../mtx/general/MTXInvXpose.html">MTXInvXpose</A></TD> 38<TD>Calculates the transpose of the inverse of a 3x4 matrix.</TD> 39 </TR> 40 <TR> 41<TD><A href="../mtx/general/MTXMultVec.html">MTXMultVec</A></TD> 42<TD>Post-multiplies matrix m by the 3D vector or point.</TD> 43 </TR> 44 <TR> 45<TD><A href="../mtx/general/MTXMultVecSR.html">MTXMultVecSR</A></TD> 46<TD>Post-multiplies the 3x3 sub-matrix by the 3D vector or point.</TD> 47 </TR> 48 <TR> 49<TD><A href="../mtx/general/MTXMultVecArray.html">MTXMultVecArray</A></TD> 50<TD>Post-multiplies matrix m by the number of 3D vectors given by count.</TD> 51 </TR> 52 <TR> 53<TD><A href="../mtx/general/MTXMultVecArraySR.html">MTXMultVecArraySR</A></TD> 54<TD>Post-multiplies a 3x3 sub-matrix (the scaling and rotation component of m) by the number of 3D vectors given by count.</TD> 55 </TR> 56 <TR> 57<TD><A href="../mtx/general/MTXRowCol.html">MTXRowCol</A></TD> 58<TD>This macro provides safe access to the elements of Mtx and Mtx44 type matrices.</TD> 59 </TR> 60 <TR> 61<TD><A href="../mtx/general/MTXTranspose.html">MTXTranspose</A></TD> 62<TD>Copies the transpose of src to xPose.</TD> 63 </TR> 64 </TBODY> 65</TABLE> 66<H2><A name="Model">Model</A></H2> 67<TABLE border="1"> 68 <TBODY> 69 <TR> 70<TD><A href="../mtx/model/MTXQuat.html">MTXQuat</A></TD> 71<TD>Sets a rotation matrix from a quaternion.</TD> 72 </TR> 73 <TR> 74<TD><A href="../mtx/model/MTXReflect.html">MTXReflect</A></TD> 75<TD>Reflects a rotation matrix with respect to a plane. </TD> 76 </TR> 77 <TR> 78<TD><A href="../mtx/model/MTXRotAxisDeg.html">MTXRotAxisDeg</A></TD> 79<TD>Sets the matrix to be rotated around the axis having the (x,y,z) component specified by axis.</TD> 80 </TR> 81 <TR> 82<TD><A href="../mtx/model/MTXRotAxisRad.html">MTXRotAxisRad,</A></TD> 83<TD>Sets the matrix to be rotated around the axis having the (x,y,z) component specified by axis.</TD> 84 </TR> 85 <TR> 86<TD><A href="../mtx/model/MTXRotDeg.html">MTXRotDeg</A></TD> 87<TD>Creates a rotation matrix about one of the major (X, Y, Z ) axes.</TD> 88 </TR> 89 <TR> 90<TD><A href="../mtx/model/MTXRotRad.html">MTXRotRad,</A></TD> 91<TD>Creates a rotation matrix about one of the major (X, Y, Z ) axes.</TD> 92 </TR> 93 <TR> 94<TD><A href="../mtx/model/MTXRotTrig.html">MTXRotTrig</A></TD> 95<TD>Creates the matrix that will undergo the rotation specified by in and cos about one of the major (X, Y, Z ) axes.</TD> 96 </TR> 97 <TR> 98<TD><A href="../mtx/model/MTXScale.html">MTXScale</A></TD> 99<TD>Sets the scaling matrix consisting of the three scaling parameters (x,y,z).</TD> 100 </TR> 101 <TR> 102<TD><A href="../mtx/model/MTXScaleApply.html">MTXScaleApply</A></TD> 103<TD>Applies the scaling transform specified by ( xS, yS, zS ) to <STRONG><EM>src</EM></STRONG> and stores the result in <STRONG><EM>dst</EM></STRONG>.</TD> 104 </TR> 105 <TR> 106<TD><A href="../mtx/model/MTXTrans.html">MTXTrans</A></TD> 107<TD>Sets the matrix that will undergo parallel translation consisting of the three parallel translation parameters (x,y,z).</TD> 108 </TR> 109 <TR> 110<TD><A href="../mtx/model/MTXTransApply.html">MTXTransApply</A></TD> 111<TD>Applies the parallel translation specified by ( xT, yT, zT ) to <STRONG><EM>src</EM></STRONG> and stores the result in <STRONG><EM>dst</EM></STRONG>.</TD> 112 </TR> 113 </TBODY> 114</TABLE> 115<H2><A name="View"></A>View</H2> 116<TABLE border="1"> 117 <TBODY> 118 <TR> 119<TD><A href="../mtx/view/MTXLookAt.html">MTXLookAt</A></TD> 120<TD>Creates the matrix that will be converted from world coordinate space to camera space.</TD> 121 </TR> 122 </TBODY> 123</TABLE> 124<H2><A name="Projection">Projection</A></H2> 125<TABLE border="1"> 126 <TBODY> 127 <TR> 128<TD><A href="../mtx/Projection/MTXFrustum.html">MTXFrustum</A></TD> 129<TD>Sets the 4x4 perspective transform matrix based on the viewing volume dimension.</TD> 130 </TR> 131 <TR> 132<TD><A href="../mtx/Projection/MTXOrtho.html">MTXOrtho</A></TD> 133<TD>Sets teh 4x4 matrix for orthographic transformation.</TD> 134 </TR> 135 <TR> 136<TD><A href="../mtx/Projection/MTXPerspective.html">MTXPerspective</A></TD> 137<TD>Sets the 4x4 perspective transform matrix based on two parameters for field-of-view and aspect ratio.</TD> 138 </TR> 139 </TBODY> 140</TABLE> 141<H2><A name="Texture Projection">Texture Projection</A></H2> 142<TABLE border="1"> 143 <TBODY> 144 <TR> 145<TD><A href="../mtx/Texture_Projection/MTXLightFrustum.html">MTXLightFrustum</A></TD> 146<TD>Sets the 3x4 perspective transform matrix based on the dimension number of the viewing volume, two scaling values, and a parallel translation value.</TD> 147 </TR> 148 <TR> 149<TD><A href="../mtx/Texture_Projection/MTXLightOrtho.html">MTXLightOrtho</A></TD> 150<TD>Sets the 3x4 matrix for orthographic projection.</TD> 151 </TR> 152 <TR> 153<TD><A href="../mtx/Texture_Projection/MTXLightPerspective.html">MTXLightPerspective</A></TD> 154<TD>Sets the 3x4 perspective transform matrix based on the field-of-view, two scaling values for aspectRatio, and two parallel translation values.</TD> 155 </TR> 156 </TBODY> 157</TABLE> 158<H2><A name="Stack">Stack</A></H2> 159<TABLE border="1"> 160 <TBODY> 161 <TR> 162<TD><A href="../mtx/stack/MTXAllocStack.html">MTXAllocStack</A></TD> 163<TD>This macro allocates memory for MtxStack.</TD> 164 </TR> 165 <TR> 166<TD><A href="../mtx/stack/MTXFreeStack.html">MTXFreeStack</A></TD> 167<TD>This macro frees memory that has been allocated to the Ptr->stackBase by MTXAllocStack.</TD> 168 </TR> 169 <TR> 170<TD><A href="../mtx/stack/MTXGetStackPtr.html">MTXGetStackPtr</A></TD> 171<TD>Returns a pointer to the top matrix in the matrix stack pointed to by sPtr->stackPtr.</TD> 172 </TR> 173 <TR> 174<TD><A href="../mtx/stack/MTXInitStack.html">MTXInitStack</A></TD> 175<TD>Initializes the other members of MTXStack after MTXAllocStack allocates memory for the stackBase pointer for MTXStack.</TD> 176 </TR> 177 <TR> 178<TD><A href="../mtx/stack/MTXPop.html">MTXPop</A></TD> 179<TD>Pops the top matrix beginning from stackPtr, a member of sPtr (sPtr->stackPtr<TT>-MTX_PTR_OFFSET</TT>).</TD> 180 </TR> 181 <TR> 182<TD><A href="../mtx/stack/MTXPush.html">MTXPush</A></TD> 183<TD>Copies matrix m to available elements in the stack pointed by sPtr.</TD> 184 </TR> 185 <TR> 186<TD><A href="../mtx/stack/MTXPushFwd.html">MTXPushFwd</A></TD> 187<TD>This function pushes transform matrices forward in the stack.</TD> 188 </TR> 189 <TR> 190<TD><A href="../mtx/stack/MTXPushInv.html">MTXPushInv</A></TD> 191<TD>Calculates the inverse of m, multiplies by sPtr->stackPtr from the front, and pushes the result on the stack.</TD> 192 </TR> 193 <TR> 194<TD><A href="../mtx/stack/MTXPushInvXpose.html">MTXPushInvXpose</A></TD> 195<TD>Pushes a forward-facing composite transform matrix of an inverse transpose matrix.</TD> 196 </TR> 197 </TBODY> 198</TABLE> 199<H2><A name="Vector">Vector</A></H2> 200<TABLE border="1"> 201 <TBODY> 202 <TR> 203<TD><A href="../mtx/vector/VECAdd.html">VECAdd</A></TD> 204<TD>Finds the sum of two vectors.</TD> 205 </TR> 206 <TR> 207<TD><A href="../mtx/vector/VECCrossProduct.html">VECCrossProduct</A></TD> 208<TD>Finds the outer product of two vectors.</TD> 209 </TR> 210 <TR> 211<TD><A href="../mtx/vector/VECDotProduct.html">VECDotProduct</A></TD> 212<TD>Finds the inner product of two vectors.</TD> 213 </TR> 214 <TR> 215<TD><A href="../mtx/vector/VECHalfAngle.html">VECHalfAngle</A></TD> 216<TD>Finds the halfway vector between two vectors.</TD> 217 </TR> 218 <TR> 219<TD><A href="../mtx/vector/VECMag.html">VECMag</A></TD> 220<TD>Finds the length of the given vector.</TD> 221 </TR> 222 <TR> 223<TD><A href="../mtx/vector/VECNormalize.html">VECNormalize</A></TD> 224<TD>Normalizes src and stores it in unit.</TD> 225 </TR> 226 <TR> 227<TD><A href="../mtx/vector/VECReflect.html">VECReflect</A></TD> 228<TD>Reflects an incident vector versus a normal such that the angle of incidence equals the angle of reflection.</TD> 229 </TR> 230 <TR> 231<TD><A href="../mtx/vector/VECScale.html">VECScale</A></TD> 232<TD>Multiplies a vector by a scalar.</TD> 233 </TR> 234 <TR> 235<TD><A href="../mtx/vector/VECSquareDistance.html">VECSquareDistance</A></TD> 236<TD>Returns the square of the distance between vectors a and b.</TD> 237 </TR> 238 <TR> 239<TD><A href="../mtx/vector/VECSquareMag.html">VECSquareMag</A></TD> 240<TD>Returns the square of the magnitude of vector v.</TD> 241 </TR> 242 <TR> 243<TD><A href="../mtx/vector/VECSubtract.html">VECSubtract</A></TD> 244<TD>Subtracts vector b from vector a (a-b) and stores the result in a_b.</TD> 245 </TR> 246 </TBODY> 247</TABLE> 248<H2><A name="Quaternion">Quaternion</A></H2> 249<TABLE border="1"> 250 <TBODY> 251 <TR> 252<TD><A href="../mtx/Quaternion/QUATAdd.html">QUATAdd</A></TD> 253<TD>Adds two quaternions ( <code><em><strong>p</strong></em> + <em><strong>q</strong></em></code> ) and places the result in <code><em><strong>r</strong></em></code>.</TD> 254 </TR> 255 <TR> 256<TD><A href="../mtx/Quaternion/QUATDivide.html">QUATDivide</A></TD> 257<TD>Divides quaternion <EM><STRONG><CODE>p</CODE></STRONG></EM> by another quaternion <CODE><EM><STRONG>q</STRONG></EM></CODE> and stores the result in <CODE><EM><STRONG>r</STRONG></EM></CODE>.</TD> 258 </TR> 259 <TR> 260<TD><A href="../mtx/Quaternion/QUATDotProduct.html">QUATDotProduct</A></TD> 261<TD>Computes the dot product of two given quaternions.</TD> 262 </TR> 263 <TR> 264<TD><A href="../mtx/Quaternion/QUATExp.html">QUATExp</A></TD> 265<TD>Exponentiates quaternion <code><em><strong>q</strong></em></code> and stores the resulting quaternion in <strong><em><font face="Courier New"><code>r</code></font></em></strong>.</TD> 266 </TR> 267 <TR> 268<TD><A href="../mtx/Quaternion/QUATInverse.html">QUATInverse</A></TD> 269<TD>Computes the inverse of quaternion <code><em><strong>src</strong></em></code> and place resultant quaternion in <strong><em><code>inv</code></em></strong>.</TD> 270 </TR> 271 <TR> 272<TD><A href="../mtx/Quaternion/QUATLerp.html">QUATLerp</A></TD> 273<TD>Performs linear interpolation on two quaternions.</TD> 274 </TR> 275 <TR> 276<TD><A href="../mtx/Quaternion/QUATLogN.html">QUATLogN</A></TD> 277<TD>Computes the natural logarithm of quaternion <code><em><strong>q</strong></em></code> and stores the resulting pure quaternion in <strong><em><font face="Courier New"><code>r</code></font></em></strong>.</TD> 278 </TR> 279 <TR> 280<TD><A href="../mtx/Quaternion/QUATMtx.html">QUATMtx</A></TD> 281<TD>Converts a model rotation matrix to a unit quaternion.</TD> 282 </TR> 283 <TR> 284<TD><A href="../mtx/Quaternion/QUATMultiply.html">QUATMultiply</A></TD> 285<TD>Multiplies two quaternions (<CODE><EM><STRONG>p</STRONG></EM> <CODE>x</CODE> <EM><STRONG>q</STRONG></EM></CODE>) and stores the result in <CODE><EM><STRONG>pq</STRONG></EM></CODE>.</TD> 286 </TR> 287 <TR> 288<TD><A href="../mtx/Quaternion/QUATNormalize.html">QUATNormalize</A></TD> 289<TD>Normalizes a quaternion <code><em><strong>src</strong></em></code> and places resultant unit quaternion in <strong><em><font face="Courier New"><code>unit</code></font></em></strong>.</TD> 290 </TR> 291 <TR> 292<TD><A href="../mtx/Quaternion/QUATRotAxisRad.html">QUATRotAxisRad</A></TD> 293<TD>Sets a quaternion for rotation about an arbitrary axis whose ( x, y, z ) components are specified by <code><em><strong>axis</strong></em></code>. </TD> 294 </TR> 295 <TR> 296<TD><A href="../mtx/Quaternion/QUATScale.html">QUATScale</A></TD> 297<TD>Multiplies a quaternion by a scalar value.</TD> 298 </TR> 299 <TR> 300<TD><A href="../mtx/Quaternion/QUATSlerp.html">QUATSlerp</A></TD> 301<TD>Computes spherical linear interpolation (Slerp) of two quaternions.</TD> 302 </TR> 303 <TR> 304<TD><A href="../mtx/Quaternion/QUATSquad.html">QUATSquad</A></TD> 305<TD>Performs spherical 3D (Squad) interpolation on two quaternions.</TD> 306 </TR> 307 <TR> 308<TD><A href="../mtx/Quaternion/QUATSubtract.html">QUATSubtract</A></TD> 309<TD>Subtracts two quaternions ( <code><em><strong>p</strong></em> - <em><strong>q</strong></em></code> ) and places the result in <code><em><strong>r</strong></em></code>.</TD> 310 </TR> 311 </TBODY> 312</TABLE> 313<H2><A name="Pairedsingles">Special Paired Single Operations</A></H2> 314<TABLE border="1"> 315 <TBODY> 316 <TR> 317<TD><A href="../mtx/Paired_Singles/PSMTXReorder.html">PSMTXReorder</A></TD> 318<TD>Converts a matrix from row-major to column-major format.</TD> 319 </TR> 320 <TR> 321<TD><A href="../mtx/Paired_Singles/PSMTXROMultVecArray.html">PSMTXROMultVecArray</A></TD> 322<TD>This is the column-major matrix version of PSMTXMultVecArray.</TD> 323 </TR> 324 </TBODY> 325</TABLE> 326<H2><A name="Unit Conversion">Unit Conversion</A></H2> 327<TABLE border="1"> 328 <TBODY> 329 <TR> 330<TD><A href="../mtx/Unit_Conversion/MTXDegToRad.html">MTXDegToRad</A></TD> 331<TD>Macro to convert degrees to radians.</TD> 332 </TR> 333 <TR> 334<TD><A href="../mtx/Unit_Conversion/MTXRadToDeg.html">MTXRadToDeg</A></TD> 335<TD>Macro to convert radians to degrees.</TD> 336 </TR> 337 </TBODY> 338</TABLE> 339<H2><A name="Structures">Structures</A></H2> 340<TABLE border="1"> 341 <TBODY> 342 <TR> 343<TD><A href="../mtx/structures/Mtx_MtxPtr.html">Mtx,MtxPtr</A></TD> 344<TD>This structure represents a 3x4 2D matrix consisting of 12 floating-point values.</TD> 345 </TR> 346 <TR> 347<TD><A href="../mtx/structures/Mtx44_Mtx44Ptr.html">Mtx44,Mtx44Ptr</A></TD> 348<TD>This structure represents a 4x4 2D matrix consisting of 16 floating-point values.</TD> 349 </TR> 350 <TR> 351<TD><A href="../mtx/structures/MtxStack_MtxStackPtr.html">MtxStack,MtxStackPtr</A></TD> 352<TD>This represents an array of automatically allocated Mtx type matrices.</TD> 353 </TR> 354 <TR> 355<TD><A href="../mtx/structures/Point3d_Point3dPtr.html">Point3d,Point3dPtr</A></TD> 356<TD>This is a 3D point expressed in terms of x, y, z.</TD> 357 </TR> 358 <TR> 359<TD><A href="../mtx/structures/Quaternion_QuaternionPtr.html">Quaternion,QuaternionPtr</A></TD> 360<TD>This quaternion type consists of three vector components (x, y, z) and one scalar component (w).</TD> 361 </TR> 362 <TR> 363<TD><A href="../mtx/structures/ROMtx_ROMtxPtr.html">ROMtx, ROMtxPtr</A></TD> 364<TD>This is the standard representation of a column of Mtx or MtxPtr.</TD> 365 </TR> 366 <TR> 367<TD><A href="../mtx/structures/Vec_VecPtr.html">Vec,VecPtr</A></TD> 368<TD>This is a three-element vector expressed in terms of x, y, z.</TD> 369 </TR> 370 </TBODY> 371</TABLE> 372<H3><A name="Mtx44 Extension" href="../mtx/Mtx44ext.html">Mtx44 Extension</A></H3> 373<P><CODE><BR></CODE></P> 374<p> 375</BODY> 376</HTML>