Matrix.transposed

Returns a transposed copy of the matrix. TODO : Remove this, create a function which returns a transposed matrix like Wrong logic anyway, as transpose( mat3x2 ) = mat2x3

struct Matrix(type, int numCols, int numRows)
@safe pure nothrow @property const
static if(cols == rows)
transposed
()
if (
(numCols > 1) &&
(numRows > 1)
)

Examples

Unittest makeIdentity, transpose

mat2 m2 = mat2( 1.0f );
m2.transpose();
assert( m2.data == mat2( 1.0f ).data );

m2.makeIdentity();
assert( m2.data == [ [ 1.0f, 0.0f ],
							[ 0.0f, 1.0f ] ] );

m2.transpose();
assert( m2.data == [ [ 1.0f, 0.0f ],
							[ 0.0f, 1.0f ] ] );
assert( m2.data == m2.identity.data );

mat3 m3 = mat3( 1.1f, 1.2f, 1.3f,
					 2.1f, 2.2f, 2.3f,
					 3.1f, 3.2f, 3.3f );
m3.transpose();
assert( m3.data == [ [ 1.1f, 2.1f, 3.1f ],
							[ 1.2f, 2.2f, 3.2f ],
							[ 1.3f, 2.3f, 3.3f ] ] );

mat4 m4 = mat4( 2.0f );
m4.transpose();
assert( m4.data == mat4( 2.0f ).data );

m4.makeIdentity();
assert( m4.data == [ [ 1.0f, 0.0f, 0.0f, 0.0f ],
							[ 0.0f, 1.0f, 0.0f, 0.0f ],
							[ 0.0f, 0.0f, 1.0f, 0.0f ],
							[ 0.0f, 0.0f, 0.0f, 1.0f ] ] );
assert( m4.data == m4.identity.data );

Meta