compute-rot90
v1.0.0
Published
Rotates a matrix by 90 degrees.
Downloads
17
Maintainers
Readme
rot90
Rotates a matrix by 90 degrees.
Installation
$ npm install compute-rot90
For use in the browser, use browserify.
Usage
var rot90 = require( 'compute-rot90' );
rot90( x[, opts] )
Rotates a matrix
by 90
degrees in the counterclockwise direction.
var matrix = require( 'dstructs-matrix' );
var data = new Float32Array( 6 );
for ( var i = 0; i < data.length; i++ ) {
data[ i ] = i;
}
var mat = matrix( data, [3,2], 'float32' );
/*
[ 0 1
2 3
4 5 ]
*/
var out = rot90( mat );
/*
[ 1 3 5
0 2 4 ]
*/
The function accepts the following options
:
- k: number of times to rotate a
matrix
by90
degrees. Default:1
. - copy:
boolean
indicating whether to return a newmatrix
. Default:true
.
To rotate a matrix
multiple times, set the k
option.
// Rotate the matrix 3 times...
var out = rot90( mat, {
'k': 3
});
/*
[ 4 2 0
5 3 1 ]
*/
k
may also be negative and thus specify that the matrix
be rotated in a clockwise direction.
var out = rot90( mat, {
'k': -2
});
/*
[ 5 4
3 2
1 0 ]
*/
By default, the function returns a new matrix instance. To mutate the input matrix, set the copy
option to false
.
var out = rot90( mat, {
'copy': false
});
/*
[ 1 3 5
0 2 4 ]
*/
var bool = ( mat === out );
// returns true
Examples
var matrix = require( 'dstructs-matrix' ),
rot90 = require( 'compute-rot90' );
var nRows = 3,
nCols = 2,
mat,
out,
i, j;
mat = matrix( [nRows,nCols], 'int32' );
for ( i = 0; i < nRows; i++ ) {
for ( j = 0; j < nCols; j++ ) {
mat.set( i, j, i*nCols + j );
}
}
/*
[ 0 1
2 3
4 5 ]
*/
// Rotate the matrix 90 degrees...
out = rot90( mat );
/*
[ 1 3 5
0 2 4 ]
*/
// Rotate the matrix 180 degrees...
out = rot90( mat, {
'k': 2
});
/*
[ 5 4
3 2
1 0 ]
*/
// Rotate the matrix 270 degrees...
out = rot90( mat, {
'k': 3
});
/*
[ 4 2 0
5 3 1 ]
*/
// Rotate the matrix 360 degrees...
out = rot90( mat, {
'k': 4
});
/*
[ 0 1
2 3
4 5 ]
*/
// Rotate the matrix -90 (equiv to +270) degrees...
out = rot90( mat, {
'k': -1
});
/*
[ 4 2 0
5 3 1 ]
*/
// Rotate the matrix -180 (equiv to +180) degrees and mutate...
out = rot90( mat, {
'copy': false,
'k': -2
});
/*
[ 5 4
3 2
1 0 ]
*/
To run the example code from the top-level application directory,
$ node ./examples/index.js
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2015. The Compute.io Authors.