如何获得我想要旋转UIView的角度

时间:2013-05-03 13:52:37

标签: objective-c

degrees

红线是UIView,旋转时锚点位于其中心。我想要实现的是,当我用手指绕着那个绿色圆圈将它握在红色圆圈上时,那条红线与手指一起移动。但是,如果不知道角度,我就不能这样做。我怎么算呢?

2 个答案:

答案 0 :(得分:1)

您可以使用毕达哥拉斯定理来计算半径。在这种情况下,您知道圆的中心位于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));

希望它有所帮助!

注意:编辑以反映措辞的变化。原始问题要求半径。

答案 1 :(得分:1)

使用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);
}