我有以下視圖,其中我使用在向上平移姿勢或向下的方向,以正或負旋轉它一個矩形:旋轉使用UIPanGestureRecognizer
我想知道,是有一個數學公式可以準確地轉換旋轉的數量,因此時間是正確的,以便讓用戶在旋轉時將手指放在視圖上?例如,如果平移翻譯回到1,旋轉它的適當數量是多少?
我有以下視圖,其中我使用在向上平移姿勢或向下的方向,以正或負旋轉它一個矩形:旋轉使用UIPanGestureRecognizer
我想知道,是有一個數學公式可以準確地轉換旋轉的數量,因此時間是正確的,以便讓用戶在旋轉時將手指放在視圖上?例如,如果平移翻譯回到1,旋轉它的適當數量是多少?
答案是角度是panAmount.y/rectangleWidth。
這裏是證明:https://math.stackexchange.com/questions/322694/angle-of-rotated-line-segment
有您需要提供給一個有意義的答案几個細節:
爲了簡單起見,我將假定視圖是圍繞其中心旋轉的,我將使用從視圖右側開始的平移作爲示例,旋轉不超過± 90°。這裏有兩個選項:
運動向上和向下線性地轉換爲旋轉角度,即,一個給定的距離的盤旋轉視圖相同的量,無論在哪裏鍋啓動。在這種情況下,您需要確定平底鍋的頂部和底部極限。他們可能是超級觀點的界限。無論如何,您要將沿Y方向行進的距離轉換爲介於-1和1之間的值,其中-1表示下限,1表示上限。像2 *(dy/superview.bounds.size.height - 0.5)。將其乘以π/ 2(math.h中的M_PI_2)以從[-1,1]範圍縮放至[-π/ 2,π/ 2]範圍,並且您已經獲得了從視圖在手勢開始處的旋轉。
視圖追蹤觸摸,以便其右邊始終「指向」觸摸。在這種情況下,平移不是非常有用,因爲你只需要在超視圖中的觸摸位置,而不是行駛的距離。計算dx和dy作爲從視圖中心到觸摸位置的x和y座標的差異。然後計算atan2(dy,dx),並獲得視圖的絕對旋轉角度。
我希望這會讓你走上正確的軌道。
謝謝。需要一點時間來消化! – 2013-03-05 02:43:32