Inherits from NSObject
Conforms to NSCopying
Declared in CC3Matrix.h

Overview

CC3Matrix is the abstract base class for a mathematical matrix.

Subclasses provide concrete implementations for a variety of matrix sizes and operations. Providing a variety of matrix subclasses allows the size (and hence storage requirments) of the matrix to be selected appropriately for each situation.

All matrix functionaly is defined by this base class, and you can use this base class in declarations, and then instantiate the appropriate subclass, depending on operational needs.

Where a particular operation is not applicable to a subclass, the interface declaration for that subclass will make note of the limitation. Depending on the nature of the operation, the subclass may choose to silently ignore the request (eg- attempting to translate a linear matrix), will provide limited functionality (eg- transposing an affine matrix), or, where the missing functionaly might cause confusing or unpredictable results, will raise an assertion exception (eg- attempting to apply a perspective projection to a linear or affine matrix).

Tasks

Properties

isDirty

Indicates whether this matrix needs to be populated with transform data.

@property (nonatomic, assign) BOOL isDirty

Discussion

Matrices are populated from transform data, such as translation, rotation & scale data. This property can be used to indicate that the transform data that populates this matrix has changed and this matrix needs to be re-populated in order to represent that data.

This property is provided as a convenience, for managing the population of this matrix. This property is neither set, not used, by this matrix.

The initial value of this property is NO.

Declared In

CC3Matrix.h

isIdentity

Indicates whether this matrix is an identity matrix.

@property (nonatomic, readonly) BOOL isIdentity

Discussion

This can be useful for short-circuiting many otherwise consumptive calculations. For example, matrix multiplication is not performed as a raw calculation if one of the matrices is an identity matrix. In addition, transposition and inversion of an identity matrix are no-ops.

This values is set to YES after the matrix is initialized or populated as an identity matrix, or populated by an identity transform. It is set to NO whenever an operation is performed on this matrix that no longer results in it being an identity matrix.

This flag is only set to YES if the matrix is deliberately populated as an identity matrix. It will not be set to YES if an operation results in the contents of this matrix matching those of an identity matrix by accident.

Declared In

CC3Matrix.h

isRigid

Indicates whether this matrix containes only rigid transforms.

@property (nonatomic, readonly) BOOL isRigid

Discussion

Rigid transforms are those that change the rotation and translation of the matrix, but do not change the size or shape.

This property is used to determine the method to use when inverting this matrix. If the matrix contains only rigid transforms, this matrix can be inverted using an optimized algorithm.

This values is set to YES after the matrix is initialized or populated as an identity matrix, or populated by an identity transform. It is set to NO whenever the matrix is transformed by any operation that is not a rotation or translation.

This flag is only set to YES if the matrix is deliberately populated as an identity matrix. It will not be set to YES if an operation results in the contents of this matrix matching those of an identity matrix by accident.

Declared In

CC3Matrix.h

Class Methods

matrix

Allocates and initializes an autoreleased instance with all elements populated as an identity matrix (ones on the diagonal, zeros elsewhere).

+ (id)matrix

Declared In

CC3Matrix.h

matrixByMultiplying:by:

Allocates and initializes an autoreleased instance constructed by multiplying the specified matrices together, where, in the matrix multiplication equation, mL is on the left, and mR is on the right (M = mL x mR).

+ (id)matrixByMultiplying:(CC3Matrix *)mL by:(CC3Matrix *)mR

Discussion

This is a convenience method, useful during development testing and verification.

Declared In

CC3Matrix.h

Instance Methods

extractForwardDirection

Extracts and returns the ‘forward’ direction vector from the rotation component of this matrix.

- (CC3Vector)extractForwardDirection

Declared In

CC3Matrix.h

extractQuaternion

Extracts the rotation component of this matrix and returns it as a unit quaternion.

- (CC3Quaternion)extractQuaternion

Declared In

CC3Matrix.h

extractRightDirection

Extracts and returns the ‘right’ direction vector from the rotation component of this matrix.

- (CC3Vector)extractRightDirection

Declared In

CC3Matrix.h

extractRotation

Extracts the rotation component of this matrix and returns it as an Euler rotation vector, assuming the rotations should be applied in YXZ order, which is the OpenGL default. Each element of the returned rotation vector represents an Euler angle in degrees.

- (CC3Vector)extractRotation

Declared In

CC3Matrix.h

extractTranslation

Extracts and returns the translation vector from this matrix.

- (CC3Vector)extractTranslation

Declared In

CC3Matrix.h

extractUpDirection

Extracts and returns the ‘up’ direction vector from the rotation component of this matrix.

- (CC3Vector)extractUpDirection

Declared In

CC3Matrix.h

init

Initializes this instance with all elements populated as an identity matrix (ones on the diagonal, zeros elsewhere).

- (id)init

Declared In

CC3Matrix.h

invert

Inverts this matrix using the most appropriate and efficient algorithm. The contents of this matrix are changed.

- (BOOL)invert

Discussion

Not all matrices are invertable. Returns whether this matrix was inverted. If this method returns NO, then this matrix was not inverted, and its contents remain unchanged.

Matrix inversion can be computationally-expensive. This method uses the value of the isRigid property to determine the most appropriate algorithm to use. If the isRigid property has a value of YES, this method will invoke the invertRigid method. If the isRigid property has a value of NO, this method will invoke the invertAdjoint method.

Declared In

CC3Matrix.h

invertAdjoint

Inverts this matrix by using the algorithm of calculating the classical adjoint and dividing by the determinant. The contents of the matrix are changed.

- (BOOL)invertAdjoint

Discussion

Not all matrices are invertable. Returns whether this matrix was inverted. If this method returns NO, then this matrix was not inverted, and its contents remain unchanged.

Matrix inversion using the classical adjoint algorithm is computationally-expensive. If it is known that the matrix contains only rotation and translation, consider using the invertRigid method instead, which is consistently 10 to 100 times faster than this method.

You can also use the invert method, which will use the invertRigid method if the isRigid property has a value of YES, and this invertAdjoint method if the isRigid property has a value of NO.

Declared In

CC3Matrix.h

invertRigid

Inverts this matrix using transposition and/or translation. The contents of this matrix are changed.

- (void)invertRigid

Discussion

This method assumes that the matrix represents a rigid transformation, containing only rotation and/or translation. Use this method only if it is known that this is the case.

Inversion of a rigid transform matrix can be accomplished very quickly using transposition and translation, and this method is consistently 10 to 100 times faster than using the invertAdjoint method. It is recommended that this method be used whenever possible.

You can also use the invert method, which will use this invertRigid method if the isRigid property has a value of YES, and the invertAdjoint method if the isRigid property has a value of NO.

Declared In

CC3Matrix.h

leftMultiplyBy:

Multiplies this matrix by the specified matrix, where, in the matrix multiplication equation, the specified matrix is on the left and this matrix is on the right.

- (void)leftMultiplyBy:(CC3Matrix *)aMatrix

Discussion

The contents of this matrix are changed. The contents of the specified matrix remain unchanged.

If the specified matrix is nil, it is treated as an identity matrix, and this matrix remains unchanged.

Declared In

CC3Matrix.h

leftMultiplyByCC3Matrix3x3:

Multiplies the contents of this matrix by the specified 3x3 matrix structure, where, in the matrix multiplication equation, the specified 3x3 matrix structure is on the left and this matrix is on the right.

- (void)leftMultiplyByCC3Matrix3x3:(CC3Matrix3x3 *)mtx

Discussion

The contents of this matrix are changed. The contents of the specified 3x3 matrix structure remain unchanged.

Declared In

CC3Matrix.h

leftMultiplyByCC3Matrix4x3:

Multiplies the contents of this matrix by the specified 4x3 matrix structure, where, in the matrix multiplication equation, the specified 4x3 matrix structure is on the left and this matrix is on the right.

- (void)leftMultiplyByCC3Matrix4x3:(CC3Matrix4x3 *)mtx

Discussion

The contents of this matrix are changed. The contents of the specified 4x3 matrix structure remain unchanged.

Declared In

CC3Matrix.h

leftMultiplyByCC3Matrix4x4:

Multiplies the contents of this matrix by the specified 4x4 matrix structure, where, in the matrix multiplication equation, the specified 4x4 matrix structure is on the left and this matrix is on the right.

- (void)leftMultiplyByCC3Matrix4x4:(CC3Matrix4x4 *)mtx

Discussion

The contents of this matrix are changed. The contents of the specified 4x4 matrix structure remain unchanged.

Declared In

CC3Matrix.h

leftMultiplyIntoCC3Matrix3x3:

Multiplies the specified 3x3 matrix structure by the contents of this matrix, where, in the matrix multiplication equation, this matrix is on the left and the specified 3x3 matrix structure is on the right.

- (void)leftMultiplyIntoCC3Matrix3x3:(CC3Matrix3x3 *)mtx

Discussion

The contents of the specified 3x3 matrix structure are changed. The contents of this matrix remain unchanged.

Declared In

CC3Matrix.h

leftMultiplyIntoCC3Matrix4x3:

Multiplies the specified 4x3 matrix structure by the contents of this matrix, where, in the matrix multiplication equation, this matrix is on the left and the specified 4x3 matrix structure is on the right.

- (void)leftMultiplyIntoCC3Matrix4x3:(CC3Matrix4x3 *)mtx

Discussion

The contents of the specified 4x3 matrix structure are changed. The contents of this matrix remain unchanged.

Declared In

CC3Matrix.h

leftMultiplyIntoCC3Matrix4x4:

Multiplies the specified 4x4 matrix structure by the contents of this matrix, where, in the matrix multiplication equation, this matrix is on the left and the specified 4x4 matrix structure is on the right.

- (void)leftMultiplyIntoCC3Matrix4x4:(CC3Matrix4x4 *)mtx

Discussion

The contents of the specified 4x4 matrix structure are changed. The contents of this matrix remain unchanged.

Declared In

CC3Matrix.h

multiplyBy:

Multiplies this matrix by the specified matrix, where, in the matrix multiplication equation, this matrix is on the left, and the specified matrix is on the right.

- (void)multiplyBy:(CC3Matrix *)aMatrix

Discussion

The contents of this matrix are changed. The contents of the specified matrix remain unchanged.

If the specified matrix is nil, it is treated as an identity matrix, and this matrix remains unchanged.

Declared In

CC3Matrix.h

multiplyByCC3Matrix3x3:

Multiplies the contents of this matrix by the specified 3x3 matrix structure, where, in the matrix multiplication equation, this matrix is on the left and the specified 3x3 matrix structure is on the right.

- (void)multiplyByCC3Matrix3x3:(CC3Matrix3x3 *)mtx

Discussion

The contents of this matrix are changed. The contents of the specified 3x3 matrix structure remain unchanged.

Declared In

CC3Matrix.h

multiplyByCC3Matrix4x3:

Multiplies the contents of this matrix by the specified 4x3 matrix structure, where, in the matrix multiplication equation, this matrix is on the left and the specified 4x3 matrix structure is on the right.

- (void)multiplyByCC3Matrix4x3:(CC3Matrix4x3 *)mtx

Discussion

The contents of this matrix are changed. The contents of the specified 4x3 matrix structure remain unchanged.

Declared In

CC3Matrix.h

multiplyByCC3Matrix4x4:

Multiplies the contents of this matrix by the specified 4x4 matrix structure, where, in the matrix multiplication equation, this matrix is on the left and the specified 4x4 matrix structure is on the right.

- (void)multiplyByCC3Matrix4x4:(CC3Matrix4x4 *)mtx

Discussion

The contents of this matrix are changed. The contents of the specified 4x4 matrix structure remain unchanged.

Declared In

CC3Matrix.h

multiplyIntoCC3Matrix3x3:

Multiplies the specified 3x3 matrix structure by the contents of this matrix, where, in the matrix multiplication equation, the specified 3x3 matrix structure is on the left and this matrix is on the right.

- (void)multiplyIntoCC3Matrix3x3:(CC3Matrix3x3 *)mtx

Discussion

The contents of the specified 3x3 matrix structure are changed. The contents of this matrix remain unchanged.

Declared In

CC3Matrix.h

multiplyIntoCC3Matrix4x3:

Multiplies the specified 4x3 matrix structure by the contents of this matrix, where, in the matrix multiplication equation, the specified 4x3 matrix structure is on the left and this matrix is on the right.

- (void)multiplyIntoCC3Matrix4x3:(CC3Matrix4x3 *)mtx

Discussion

The contents of the specified 4x3 matrix structure are changed. The contents of this matrix remain unchanged.

Declared In

CC3Matrix.h

multiplyIntoCC3Matrix4x4:

Multiplies the specified 4x4 matrix structure by the contents of this matrix, where, in the matrix multiplication equation, the specified 4x4 matrix structure is on the left and this matrix is on the right.

- (void)multiplyIntoCC3Matrix4x4:(CC3Matrix4x4 *)mtx

Discussion

The contents of the specified 4x4 matrix structure are changed. The contents of this matrix remain unchanged.

Declared In

CC3Matrix.h

orthonormalizeRotationStartingWith:

Orthonormalizes the rotation component of this matrix, using a Gram-Schmidt process, and using the column indicated by the specified column number as the starting point of the orthonormalization process.

- (void)orthonormalizeRotationStartingWith:(NSUInteger)startColNum

Discussion

The specified column number should be between 1 and 3.

Upon completion, the first three elements of each of the first three columns in this matrix will be a unit vector that is orthagonal to the first three elements of the other two columns.

Since the Gram-Schmidt process is biased towards the starting column, if this method will be invoked repeatedly, it is recommended that the starting column number be changed on each invocation of this method, to ensure that the starting bias be averaged across each of the columns over the long term.

Declared In

CC3Matrix.h

populateCC3Matrix3x3:

Populates the specified 3x3 matrix structure from the contents of this matrix.

- (void)populateCC3Matrix3x3:(CC3Matrix3x3 *)mtx

Discussion

The elements of the specified matrix structure are populated from this matrix starting at the top-left of both matrices. If this matrix is larger than 3x3, the additional elements are ignored.

Declared In

CC3Matrix.h

populateCC3Matrix4x3:

Populates the specified 4x3 matrix structure from the contents of this matrix.

- (void)populateCC3Matrix4x3:(CC3Matrix4x3 *)mtx

Discussion

The elements of the specified matrix structure are populated from this matrix starting at the top-left of both matrices. If this matrix is larger than 4x3, the additional elements are ignored. If this matrix is smaller than 4x3, the remaining elements of the specified matrix structure are populated as in an idendity matrix.

Declared In

CC3Matrix.h

populateCC3Matrix4x4:

Populates the specified 4x4 matrix structure from the contents of this matrix.

- (void)populateCC3Matrix4x4:(CC3Matrix4x4 *)mtx

Discussion

The elements of the specified matrix structure are populated from this matrix starting at the top-left of both matrices. If this matrix is smaller than 4x4, the remaining elements of the specified matrix structure are populated as in an idendity matrix.

Declared In

CC3Matrix.h

populateFrom:

Populates this instance from elements copied from the specified matrix instance.

- (void)populateFrom:(CC3Matrix *)aMatrix

Discussion

The elements of this matrix are populated from the specified matrix starting at the top-left of both matrices. If either dimension of the specified matrix are smaller than this matrix, the remaining elements of this matrix are populated as in an identity matrix.

If the specified matrix is nil, it is treated as the identity matrix, and this matrix will be populated as an identity matrix.

Declared In

CC3Matrix.h

populateFromCC3Matrix3x3:

Populates this matrix from the specified 3x3 matrix structure.

- (void)populateFromCC3Matrix3x3:(CC3Matrix3x3 *)mtx

Discussion

The elements of this matrix are populated from the specified matrix structure starting at the top-left of both matrices. If this matrix is larger than 3x3, the remaining elements of this matrix are populated as in an identity matrix.

Declared In

CC3Matrix.h

populateFromCC3Matrix4x3:

Populates this matrix from the specified 4x3 matrix structure.

- (void)populateFromCC3Matrix4x3:(CC3Matrix4x3 *)mtx

Discussion

The elements of this matrix are populated from the specified matrix structure starting at the top-left of both matrices. If this matrix is smaller than 4x3, the additional elements are ignored. If this matrix is larger than 4x3, the remaining elements of this matrix are populated as in an identity matrix.

Declared In

CC3Matrix.h

populateFromCC3Matrix4x4:

Populates this matrix from the specified 4x4 matrix structure.

- (void)populateFromCC3Matrix4x4:(CC3Matrix4x4 *)mtx

Discussion

The elements of this matrix are populated from the specified matrix structure starting at the top-left of both matrices. If this matrix is smaller than 4x4, the additional elements are ignored.

Declared In

CC3Matrix.h

populateFromFrustumLeft:andRight:andTop:andBottom:andNear:

Populates this matrix as an infinite-depth perspective projection matrix with the specified frustum dimensions, where the far clipping plane is set at an infinite distance.

- (void)populateFromFrustumLeft:(GLfloat)left andRight:(GLfloat)right andTop:(GLfloat)top andBottom:(GLfloat)bottom andNear:(GLfloat)near

Discussion

If this matrix is of a subclass type that does not support perspective projection, this method will throw an assertion exception.

Declared In

CC3Matrix.h

populateFromFrustumLeft:andRight:andTop:andBottom:andNear:andFar:

Populates this matrix as a perspective projection matrix with the specified frustum dimensions.

- (void)populateFromFrustumLeft:(GLfloat)left andRight:(GLfloat)right andTop:(GLfloat)top andBottom:(GLfloat)bottom andNear:(GLfloat)near andFar:(GLfloat)far

Discussion

If this matrix is of a subclass type that does not support perspective projection, this method will throw an assertion exception.

Declared In

CC3Matrix.h

populateFromQuaternion:

Populates this instance from the specified quaternion.

- (void)populateFromQuaternion:(CC3Quaternion)aQuaternion

Discussion

The contents of this matrix will be the same as if this matrix were populated as an identity matrix, and then transformed by the specified quaternion. Elements that are not affected by the specified quaternion will be populated as in an identity matrix.

Declared In

CC3Matrix.h

populateFromRotation:

Populates this instance from the specified rotation vector, containing three Euler angles, each measured in degrees. Rotation is performed in YXZ order, which is the OpenGL default.

- (void)populateFromRotation:(CC3Vector)aRotation

Discussion

The contents of this matrix will be the same as if this matrix were populated as an identity matrix, and then transformed by the specified rotation. Elements that are not affected by the specified rotation will be populated as in an identity matrix.

Declared In

CC3Matrix.h

populateFromScale:

Populates this instance from specified scaling vector.

- (void)populateFromScale:(CC3Vector)aScale

Discussion

The contents of this matrix will be the same as if this matrix were populated as an identity matrix, and then transformed by the specified scale vector. Elements that are not affected by the specified scale vector will be populated as in an identity matrix.

Declared In

CC3Matrix.h

populateFromTranslation:

Populates this instance from the specified translation vector.

- (void)populateFromTranslation:(CC3Vector)aTranslation

Discussion

The contents of this matrix will be the same as if this matrix were populated as an identity matrix, and then transformed by the specified translation vector. Elements that are not affected by the specified translation vector will be populated as in an identity matrix.

If this matrix is of a subclass type that does not support translation, this matrix will be populated as an identity matrix.

Declared In

CC3Matrix.h

populateIdentity

Populates this instance as an identity matrix (ones on the diagonal, zeros elsewhere).

- (void)populateIdentity

Declared In

CC3Matrix.h

populateOrthoFromFrustumLeft:andRight:andTop:andBottom:andNear:

Populates this matrix as an infinite-depth orthographic projection matrix with the specified frustum dimensions, where the far clipping plane is set at an infinite distance.

- (void)populateOrthoFromFrustumLeft:(GLfloat)left andRight:(GLfloat)right andTop:(GLfloat)top andBottom:(GLfloat)bottom andNear:(GLfloat)near

Discussion

If this matrix is of a subclass type that does not support orthographic projection, this method will throw an assertion exception.

Declared In

CC3Matrix.h

populateOrthoFromFrustumLeft:andRight:andTop:andBottom:andNear:andFar:

Populates this matrix as a parallel orthographic matrix with the specified frustum dimensions.

- (void)populateOrthoFromFrustumLeft:(GLfloat)left andRight:(GLfloat)right andTop:(GLfloat)top andBottom:(GLfloat)bottom andNear:(GLfloat)near andFar:(GLfloat)far

Discussion

If this matrix is of a subclass type that does not support orthographic projection, this method will throw an assertion exception.

Declared In

CC3Matrix.h

populateToLookAt:withEyeAt:withUp:

Populates this matrix so that it will transform a vector between the targetLocation and the eyeLocation to point along the negative Z-axis, and transforms the specified upDirection to the positive Y-axis.

- (void)populateToLookAt:(CC3Vector)targetLocation withEyeAt:(CC3Vector)eyeLocation withUp:(CC3Vector)upDirection

Discussion

This transform works in the direction from model-space to view-space, and therefore includes an implied inversion relative to the directToward:withUp: method. When applied to the camera, this has the effect of locating the camera at the eyeLocation and pointing it at the targetLocation, while orienting it so that ‘up’ appears to be in the upDirection, from the viewer’s perspective.

If this matrix is of a subclass type that does not support translation, this matrix will be populated to look in the correct direction, but will not be looking at the target location, as the matrix cannot be translated to the location of the eye.

Declared In

CC3Matrix.h

populateToPointTowards:withUp:

Populates this matrix so that it will transform a vector pointed down the negative Z-axis to point in the specified forwardDirection, and transforms the positive Y-axis to point in the specified upDirection.

- (void)populateToPointTowards:(CC3Vector)fwdDirection withUp:(CC3Vector)upDirection

Discussion

When applied to a targetting object (such as a camera, light, gun, etc), this has the effect of pointing that object in a direction and orienting it so that ‘up’ is in the upDirection.

This method works in model-space, and does not include an implied inversion. So, when applied to the camera, this matrix must be subsequently inverted to transform from model-space to view-space.

Declared In

CC3Matrix.h

populateZero

Populates this instance so that all elements are zero.

- (void)populateZero

Declared In

CC3Matrix.h

rotateBy:

Rotates this matrix by the specified amount. Each element of the rotation vector represents an Euler angle in degrees, and rotation is performed in YXZ order, which is the OpenGL default.

- (void)rotateBy:(CC3Vector)aVector

Discussion

Since this matrix may potentially already contains rotations, the new rotation is performed first, followed by the rotation already contained within this matrix. If the existing rotations were performed first, the new rotation would be performed in the rotated coordinate system defined by this matrix, which is almost always not the desired effect.

In mathematical terms, the incoming rotation is converted to matrix form, and is left-multiplied to this matrix.

Declared In

CC3Matrix.h

rotateByQuaternion:

Rotates this matrix by the rotation specified in the given quaternion.

- (void)rotateByQuaternion:(CC3Quaternion)aQuaternion

Discussion

Since this matrix may potentially already contains rotations, the new rotation is performed first, followed by the rotation already contained within this matrix. If the existing rotations were performed first, the new rotation would be performed in the rotated coordinate system defined by this matrix, which is almost always not the desired effect.

In mathematical terms, the incoming rotation is converted to matrix form, and is left-multiplied to this matrix.

Declared In

CC3Matrix.h

scaleBy:

Scales this matrix in three dimensions by the specified scaling vector. Non-uniform scaling can be achieved by specifying different values for each element of the scaling vector.

- (void)scaleBy:(CC3Vector)aVector

Declared In

CC3Matrix.h

transformDirection:

Transforms the specified direction vector using this matrix, and returns the transformed direction.

- (CC3Vector)transformDirection:(CC3Vector)aDirection

Discussion

If the matrix supports homogeneous coordinates, the fourth element of the location vector is taken to have a value of zero.

This matrix and the original specified location vector remain unchanged.

Declared In

CC3Matrix.h

transformHomogeneousVector:

Transforms the specified homogeneous vector using this matrix, and returns the transformed vector.

- (CC3Vector4)transformHomogeneousVector:(CC3Vector4)aVector

Discussion

This matrix and the original specified homogeneous vector remain unchanged.

Declared In

CC3Matrix.h

transformLocation:

Transforms the specified location vector using this matrix, and returns the transformed location.

- (CC3Vector)transformLocation:(CC3Vector)aLocation

Discussion

If the matrix supports homogeneous coordinates, the fourth element of the location vector is taken to have a value of one.

This matrix and the original specified location vector remain unchanged.

Declared In

CC3Matrix.h

transformRay:

Transforms the specified ray using this matrix, and returns the transformed ray.

- (CC3Ray)transformRay:(CC3Ray)aRay

Discussion

Since a ray is a composite of a location and a direction, this implementation invokes the transformLocation: method on the location component of the ray, and the transformDirection: method on the direction component of the ray.

This matrix and the original specified direction vector remain unchanged.

Declared In

CC3Matrix.h

translateBy:

Translates this matrix in three dimensions by the specified translation vector.

- (void)translateBy:(CC3Vector)aVector

Discussion

If this matrix is of a subclass type that does not support translation, this method will have no effect on the matrix.

Declared In

CC3Matrix.h

transpose

Transposes this matrix. The contents of this matrix are changed.

- (void)transpose

Declared In

CC3Matrix.h