#pragma mark - 传入一个起始点和结束点 计算相对于起始位置的转动角度(顺时针)
-(CGFloat)getRotateFromBeginPoint:(CGPoint)beginPoint toNowPoint:(CGPoint)point
{
// 取出点击坐标x y
CGFloat x,y;
x = point.x;
y = point.y;
// 圆心坐标
CGFloat xC = beginPoint.x;
CGFloat yC = beginPoint.y;
// 计算控件距离圆心距离
CGFloat distance = sqrt(pow((x - xC), 2) + pow(y - yC, 2));
CGFloat xD = (x - xC);
CGFloat mySin = fabs(xD) / distance;
CGFloat degree;
if (point.x < beginPoint.x) {
if (point.y < beginPoint.y) {
degree = 360 - asin(mySin) / M_PI * 180;
}
else
{
degree = asin(mySin) / M_PI * 180 + 180;
}
}
else
{
if (point.y < beginPoint.y) {
degree = asin(mySin) / M_PI * 180;
}
else
{
degree = 180 - asin(mySin) / M_PI * 180;
}
}
return degree;
}
传入一个圆心和任意一个点 计算相对旋转的角度
最新推荐文章于 2022-02-24 11:28:16 发布