JSFiddle - React, Tailwind, and code Playground
HTML
<span>
<label for="spin-rx">RX:</label>
<input id="spin-rx" name="value"/>
</span>
<span>
<label for="spin-ry">RY:</label>
<input id="spin-ry" name="value"/>
</span>
<span>
<label for="spin-rz">RZ:</label>
<input id="spin-rz" name="value"/>
</span>
<span>
<label for="spin-tx">TX:</label>
<input id="spin-tx" name="value"/>
</span>
<span>
<label for="spin-ty">TY:</label>
<input id="spin-ty" name="value"/>
</span>
<span>
<label for="spin-tz">TZ:</label>
<input id="spin-tz" name="value"/>
</span>
<hr>
<button id="btn-apply">apply rot + transl</button>
<button id="btn-reset">reset</button>
<hr>
<div class="fixed"> <span id="row1"></span>
<br/> <span id="row2"></span>
<br/> <span id="row3"></span>
</div>
<hr>
<div class="fixed"> <span id="reverse"></span>
</div>
CSS
.ui-spinner {
width: 76px
}
.fixed {
font: 18px Courier, monospace;
}
JavaScript
function getRotation(matrix) {
var angleX = 0;
var angleY = 0;
var angleZ = 0;
angleX = -Math.atan2(-matrix.m21, matrix.m11);
angleY = -Math.atan2(-matrix.m02, matrix.m00);
angleZ = Math.asin(matrix.m01);
var rev = {
degX: angleX * (180 / Math.PI),
degY: angleY * (180 / Math.PI),
degZ: angleZ * (180 / Math.PI)
};
return rev;
}
/* matrix functios */
function rotateX(matrix, angle) {
if (angle !== 0) {
angle *= Math.PI / 180;
var s = Math.sin(angle);
var c = Math.cos(angle);
var m10 = c * matrix.m10 - s * matrix.m20;
var m11 = c * matrix.m11 - s * matrix.m21;
var m12 = c * matrix.m12 - s * matrix.m22;
var m13 = c * matrix.m13 - s * matrix.m23;
var m20 = c * matrix.m20 + s * matrix.m10;
var m21 = c * matrix.m21 + s * matrix.m11;
var m22 = c * matrix.m22 + s * matrix.m12;
var m23 = c * matrix.m23 + s * matrix.m13;
matrix.m10 = m10;
matrix.m11 = m11;
matrix.m12 = m12;
matrix.m13 = m13;
matrix.m20 = m20;
matrix.m21 = m21;
matrix.m22 = m22;
matrix.m23 = m23;
}
return matrix;
}
function rotateY(matrix, angle) {
if (angle !== 0) {
angle *= Math.PI / 180;
var s = Math.sin(angle);
var c = Math.cos(angle);
var m00 = c * matrix.m00 + s * matrix.m20;
var m01 = c * matrix.m01 + s * matrix.m21;
var m02 = c * matrix.m02 + s * matrix.m22;
var m03 = c * matrix.m03 + s * matrix.m23;
var m20 = c * matrix.m20 - s * matrix.m00;
var m21 = c * matrix.m21 - s * matrix.m01;
var m22 = c * matrix.m22 - s * matrix.m02;
var m23 = c * matrix.m23 - s * matrix.m03;
matrix.m00 = m00;
matrix.m01 = m01;
matrix.m02 = m02;
matrix.m03 = m03;
matrix.m20 = m20;
matrix.m21 = m21;
matrix.m22 = m22;
matrix.m23 = m23;
}
...