calcAngleAxisFromRotateMatrix
using math.js
by Quncore
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.2.1/math.min.js"></script>
<p id="log"></p>
JavaScript
"use strict";
// ф-я вывода item(string) внутри тега p с id "log"
var log = function(item) {
var p = document.getElementById("log");
Array.isArray(item) ? item.forEach(function(current, i, array) {
log("[" + current + "]")
}) : p.innerHTML += item + "<br />"
};
var calcAngleAxisFromRotateMatrix = function(rotateMatrix){
var R = rotateMatrix,
cosA = 1/2(math.subtract((R[0][0]+R[1][1]+R[2][2]),1)),
angleDeg = math.acos(cosA),
sinA = math.sin(angleDeg),
sinAx2 = 2*sinA,
C = [(R[2][1]-R[1][2])/sinAx2,(R[0][2]-R[2][0])/sinAx2,(R[1][0]-R[0][1])/sinAx2];
return C
};
log(calcRotateMatrix(30, "custom", undefined, [1 / math.sqrt(3), 1 / math.sqrt(3), 1 / math.sqrt(3)]));// angle,axis,basis,customVector