2013-10-19 125 views
2

我試圖實現一個輸出正整數的旋轉輪 - sizeof(int) - 順時針和負整數旋轉時 - sizeof(int) - 旋轉時逆時針。我與SMRotaryWheel執行工作中發現here和輸出在該方法生成的弧度值:計算旋轉角度而不是傾斜角度大於360度

continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event

它使用atan2f()函數來計算傾斜角度,做一些運算,以確定在範圍2Pi弧度旋轉。

我遇到的問題是,因爲它只測量傾斜角度,所以輸出範圍只在+/- pi範圍內。

是否有一個(trig?)函數或多個函數可以計算角度大於360度的角度而不是傾斜角度?

+0

我和你有同樣的問題。你是否解決了這個問題? – SeanChense

+0

@SeanChense不幸的是我沒有。我最終放棄了旋轉輪的想法。這不是關鍵的UI。請發佈您的答案聽到如果你找到解決辦法。 – Nick

回答

0

編輯:我誤解了原來的描述。 (1,0)爲0,則(0,1)爲π/2,(-1,0)爲π(0,-1)爲3 π/2,其中(0,1)爲π/2,並回到(1,0)是2 π(或0)。

你的設置是,從III到IV的交叉是π到0,從I到II的交叉是0到-π。所以想要更改到II至0℃〜π,然後換III到IV爲π至2 π,

僞代碼(假設輸入θ的範圍是{θ | - π < θ < π})

function inclination2rotation(θ) 
{ 
    if (θ <= 0) 
    { 
     return -θ; 
    } 
    if (θ > 0) 
    { 
     return -θ+2π; 
    } 
} 
+0

謝謝!我正在努力的是,當我開始順時針旋轉車輪(通過座標平面的象限4和3)時,弧度值從0變到π。只要我越過從象限3到象限2的閾值,弧度值將翻轉爲-pi,並在達到原始起點時回到0。看起來我需要一些方法來確定何時開始向弧度添加2pi,但我很難過。 – Nick

+0

是我之前還是之後加入2pi的建議? – chiliNUT

+0

這是在添加2pi之前。 – Nick