5
私はコードでfound at CSS-Tricksを使用してJavaScriptを使用して現在の回転変換を取得しています。JavaScriptを使用してCSSトランスフォームの回転値を度で取得する方法
JavaScript関数:
function getCurrentRotation(elid) {
var el = document.getElementById(elid);
var st = window.getComputedStyle(el, null);
var tr = st.getPropertyValue("-webkit-transform") ||
st.getPropertyValue("-moz-transform") ||
st.getPropertyValue("-ms-transform") ||
st.getPropertyValue("-o-transform") ||
st.getPropertyValue("transform") ||
"fail...";
if(tr !== "none") {
console.log('Matrix: ' + tr);
var values = tr.split('(')[1];
values = values.split(')')[0];
values = values.split(',');
var a = values[0];
var b = values[1];
var c = values[2];
var d = values[3];
var scale = Math.sqrt(a*a + b*b);
// arc sin, convert from radians to degrees, round
/**/
var sin = b/scale;
var angle = Math.round(Math.asin(sin) * (180/Math.PI));
/*/
var angle = Math.round(Math.atan2(b, a) * (180/Math.PI));
/**/
} else {
var angle = 0;
}
// works!
console.log('Rotate: ' + angle + 'deg');
$('#results').append('<p>Rotate: ' + angle + 'deg</p>');
}
ポストによると、これは私が負の数を取得し、180度以上の値のために、しかし、作品、および360degはゼロを返します。 180度から360度の度数を正しく返すことができる必要があります。
正しい度合を180度戻すことができないこのコードでは何が間違っていますか?
デモを見るとかなり意味があります:See the pen for a demo of this in action。
あなたは単に角度に360を追加することができませんか? –
はい、更新されたコードで回答が追加されました。幾何学の知識が不足していることがわかった。見つかりましたヘルプ:http://stackoverflow.com/questions/10343448/javascript-atan2-function-not-giving-expected-results – jjeaton