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