紅線是在其中心錨點旋轉的UIView。我想要實現的是,當我將手指拖到綠色的圓圈上時,將其保持在紅色圓圈上,那條紅色線條與手指一起移動。但是如果不知道角度,我就無法做到這一點。我如何計算它?
回答
您可以使用畢達哥拉斯定理來計算半徑。在這種情況下,您知道圓的中心位於x:152,y:0。你的觸摸位置將在x1,y1,這給你足夠的信息來計算腿。 在代碼:
CGPoint center = CGPointMake(152.0f, 0.0f);
CGPoint touchPoint = [gestureRecognizer locationInView:yourView];
float xLeg = fabs(center.x - touchPoint.x);
float yLeg = fabs(touchPoint.y);
angle = atan(xLeg/yLeg);
//float radius = sqrt(pow(xLeg, 2) + pow(yLeg, 2));
希望它能幫助!
注:編輯以反映措辭的變化。原始問題要求半徑。
太棒了!這正是我所期待的!非常感謝你。 – 2013-05-03 14:38:57
我可能會誤解,但這種解決方案無法分辨角度是否偏離中心。 – vikingosegundo 2013-05-03 15:12:39
@ikinciviking你說得對。檢查touchPoint.x是否大於或小於center.x應該有效。 – Pablo 2013-05-03 15:20:31
使用3點的反正切。 (中心,開始觸摸的點/或您定義爲角度0的固定位置,當前觸點)
double AngleBetweenThreePoints(CGPoint point1,CGPoint point2, CGPoint point3)
{
CGPoint p1 = CGPointMake(point2.x - point1.x, -1*point2.y - point1.y *-1);
CGPoint p2 = CGPointMake(point3.x -point1.x, -1*point3.y -point1.y*-1);
double angle = atan2(p2.x*p1.y-p1.x*p2.x,p1.y*p2.y);
return angle /(2* M_PI);
}
+1好答案。可能對於繪圖來說足夠好,但角度的符號在零點附近會有點不穩定。可以添加一個閾值:if(epsilon
- 1. 順時針旋轉UIView以獲得大於180度的角度
- 2. 將UIImage或UIView旋轉到特定的角度,而不是角度的數量
- 3. Android我想獲得設備的旋轉角度
- 4. 我們如何從矩陣中獲取旋轉角度?
- 5. 獲取旋轉的矩形UIView的角座標iOS
- 6. Unity - Sprite旋轉+獲取角度
- 7. Iphone:OpenGL glLookAt:獲取旋轉角度
- 8. CABasicAnimation如何獲取當前的旋轉角度
- 9. 如何使用jCanvas動畫獲取當前的旋轉角度?
- 10. 如何獲取UIView實例旋轉角度,當它處於旋轉動畫狀態?
- 11. 獲取旋轉角度旋轉視圖後
- 12. 如何將UIView從右上角開始旋轉90度?
- 13. 旋轉角度
- 14. 如何旋轉UIView?
- 15. 獲取UIView的當前傾斜角度
- 16. 如何獲得速度的角度來旋轉子彈?
- 17. 如何確定點的旋轉角度
- 18. 如何旋轉角度的div?
- 19. 轉換CSS3動畫:旋轉。獲取旋轉元件當前角度的方法?
- 20. 取消旋轉矩陣中的角度
- 21. CGAffineTransformRotate旋轉次數而不是角度
- 22. 如何從一個3D對象的轉換martrix獲取角度旋轉
- 23. 檢測旋轉的UIView的寬度/高度取向改變後
- 24. 緩慢的角度旋轉
- 25. Android角度旋轉
- 26. 角度針旋轉
- 27. 我想要旋轉在IOS圖像按角度
- 28. 獲取旋轉矩形的角落
- 29. 獲取3D三角形的旋轉
- 30. 如何旋轉我的角色?
您是要求半徑還是度數? – Pfitz 2013-05-03 13:57:50
你有半徑,這是152 – vikingosegundo 2013-05-03 13:57:58
我問每次我的手指移動時如何計算它,並獲得我在圖像上描述的區域(304寬度,140高度)不同的座標 – 2013-05-03 14:00:36