2013-11-25 40 views
3

當我以小角度值(如1度)檢查它時,旋轉功能是否不準確?Is obj.style.WebkitTransform =「rotate(」+ degree +「deg)」;非常精準?

因爲我注意到了,我的計算結果是正確的,但是有可能對象稍微傾斜一點點。

我使用js-control-css旋轉創建了一個1小時倒計時鐘,但它有一些機會略有偏差,而計算值是正確的。 http://jsbin.com/exIFAPIS/1/(你可以在javascript的開始時調整開始時間,叫做「sendTime」)

任何人都可以幫我解決一些提示或者可能的原因嗎?

非常感謝!

回答

4

首先,真棒計時器芽!

整件事情效果很好,事實上,我真的很想解決你的問題,只是爲了看看它的工作完美。

問題在於旋轉僅在一定程度上關閉。這看起來很小,但它實際上是旋轉屬性可行的一個大的誤差範圍。否則,在正常的日常應用程序中很容易辨別。如基本的90度和180度轉換。 181-179是一個很大的區別。

爲了說明這一點看看這個小提琴:

http://jsfiddle.net/agconti/x8PFL/1/

HTML:

<div id="div-1"><p>reference text</p></div> 
<div id="div-2"><p>reference text</p></div> 
<div id="div-3"><p>reference text</p></div> 
<div id="div-4"><p>reference text</p></div> 

CSS:

div { 
    width: 100px; 
    height:100px; 
    border: 1px solid black; 
    display:inline-block; 
} 
p{ margin: 25%; text-decoration:underline;} 
#div-2 { 
    -webkit-transform: rotate(179deg); 
    -moz-transform: rotate(179deg); 
    transform: rotate(179deg); 
} 

#div-3 { 
    -webkit-transform: rotate(181deg); 
    -moz-transform: rotate(181deg); 
    transform: rotate(181deg); 
} 
#div-3 { 
    -webkit-transform: rotate(181deg); 
    -moz-transform: rotate(181deg); 
    transform: rotate(181deg); 
} 
#div-3 { 
    -webkit-transform: rotate(181deg); 
    -moz-transform: rotate(181deg); 
    transform: rotate(181deg); 
} 
#div-4 { 
    -webkit-transform: rotate(179.8deg); 
    -moz-transform: rotate(179.8deg); 
    transform: rotate(179.8deg); 
} 

你可以看到,即使在div-4有一個失真程度(又稱其不完美straig H T )。這意味着旋轉屬性可以精確到1位小數點。

(如果將它帶到179.9deg,則爲+/- 1小數點後的位置)。所以要回答你的第一個問題。是的,旋轉屬性精確到至少1度。因爲你的例子在0.5度左右(經過眼睛調整)後,似乎很清楚你的計算必須是關閉的,而不是旋轉屬性,因爲0.5度完全在屬性的容差範圍內[1]。 (STD +/- 1度 - > 5度是標準偏差的5倍(當然這是鬆散的))。

我不排除從您的計算累積舍入可能會導致錯誤,似乎不太可能給予測試。如果您檢查數學運算並且仍然遇到錯誤,爲了防止精確度損失,您可以將小數運算做爲整數並將結果除以變換值。

+0

感謝您的回答和很好的解釋!我將首先嚐試整數中間值,然後除以變換值,看看會發生什麼。 –

+0

@YingD沒問題;保持建設很酷的東西!請讓我知道如果這爲你解決,我很樂意看到成品。 – agconti