based on : https://code.google.com/p/webgl-mjs/source/browse/mjs.js concode_field_sep double[] perspective concode_elem_sep double[] translation concode_elem_sep double[] rotationDegrees concode_elem_sep double EPSILON concode_elem_sep double[] quaternion concode_elem_sep double[] scale concode_elem_sep double[] skew concode_field_sep double[] inverse concode_elem_sep double[] v3Combine concode_elem_sep void quaternionToDegreesXYZ concode_elem_sep double roundTo3Places concode_elem_sep void decomposeMatrix concode_elem_sep double v3Length concode_elem_sep boolean isZero concode_elem_sep double[] transpose concode_elem_sep double v3Dot concode_elem_sep void multiplyVectorByMatrix concode_elem_sep double[] v3Cross concode_elem_sep double determinant
double [ ] function ( double [ ] arg0 , double arg1 ) { double loc0 = 1 / ( isZero ( arg1 ) ? v3Length ( arg0 ) : arg1 ) ; return new double [ ] { arg0 [ 0 ] * loc0 , arg0 [ 1 ] * loc0 , arg0 [ 2 ] * loc0 } ; }