红线是在其中心锚点旋转的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. 将UIImage或UIView旋转到特定的角度,而不是角度的数量
- 2. 我们如何从矩阵中获取旋转角度?
- 3. Unity - Sprite旋转+获取角度
- 4. CABasicAnimation如何获取当前的旋转角度
- 5. 如何获取UIView实例旋转角度,当它处于旋转动画状态?
- 6. 获取旋转角度旋转视图后
- 7. 如何将UIView从右上角开始旋转90度?
- 8. 旋转角度
- 9. 如何旋转UIView?
- 10. 如何获得速度的角度来旋转子弹?
- 11. 转换CSS3动画:旋转。获取旋转元件当前角度的方法?
- 12. 如何确定点的旋转角度
- 13. 如何旋转角度的div?
- 14. 检测旋转的UIView的宽度/高度取向改变后
- 15. 角度针旋转
- 16. 获取的UIView特定的角坐标,不论其旋转/ UIImageView的
- 17. 如何获得在python中旋转一条直线的角度
- 18. 如何从旋转点获得矩形的方向(角度)
- 19. iphone sdk CGAffineTransform获取对象的旋转角度
- 20. 获取旋转超级视图后的实际角度
- 21. 查找旋转角度给定旋转角度
- 22. Android ImageView:我怎样才能获得当前的旋转角度?
- 23. 刚体的夹角旋转角度
- 24. 如何根据角度旋转对象?
- 25. 如何计算旋转轴和角度?
- 26. 计算旋转角度和旋转角度前的位置的绝对位置
- 27. 获取旋转度和度数显示
- 28. 如何旋转两个UIView的?
- 29. UIView旋转
- 30. 旋转UIView iPhone
您是要求半径还是度数? – Pfitz 2013-05-03 13:57:50
你有半径,这是152 – vikingosegundo 2013-05-03 13:57:58
我问每次我的手指移动时如何计算它,并获得我在图像上描述的区域(304宽度,140高度)不同的坐标 – 2013-05-03 14:00:36