iOS 根据圆心的坐标点、半径、当前手势所在的坐标点,计算出圆的运动轨迹坐标...

 

/**
 *  根据圆心的坐标点、半径、当前手势所在的坐标点,计算出圆的运动轨迹坐标
 *  @param radius 圆心半径
 *  @param centerCircle 圆心的坐标点
 *  @param currentPoint 当前的手势所在的坐标点
 *  @return CGPoint 返回圆的坐标
 */
+(CGPoint)CirclePoint:(CGFloat)radius withCenterCircle:(CGPoint)centerCircle withCurrentPoint:(CGPoint)currentPoint;

+(CGPoint)CirclePoint:(CGFloat)radius withCenterCircle:(CGPoint)centerCircle withCurrentPoint:(CGPoint)currentPoint
{
    CGPoint cPoint;
    CGFloat x = currentPoint.x;
    CGFloat y = currentPoint.y;
    CGFloat cX ; //圆的X坐标轨迹
    CGFloat cY ; //圆的Y坐标轨迹
    CGFloat daX; // 圆心到转动按钮的距离的平方
    //CGFloat daY;
    CGFloat aX;  // 圆心到转动按钮的距离
    //CGFloat aY;
    CGFloat cosX;  // 圆心水平方向与转动按钮形成的夹角的cos值
    
    //圆心与触控点的距离的平方(勾股定理)
    daX =  (x - centerCircle.x)*(x - centerCircle.x) + (y - centerCircle.y)*(y - centerCircle.y);
    aX = sqrt(daX); //开根号  //圆心与触控点的距离
    cosX =  fabs(x - centerCircle.x)/aX;  //绝对值
    cX = cosX*radius ; //  x =R * cosX;  圆心到触控点在水平坐标的X的值
    cY = sqrt(radius*radius - cX*cX);
    
    if(x<centerCircle.x) //如果X所在的点小于圆心 在圆心的左边
    {
        cX = centerCircle.x - cX;
    }
    else
    {
        cX = centerCircle.x + cX;
    }
    
    if(y<centerCircle.y)
    {
        cY = centerCircle.y - cY;
    }
    else
    {
        cY = centerCircle.y + cY;
    }
    cPoint.x = cX;
    cPoint.y = cY;
    return cPoint;
}

 

转载于:https://www.cnblogs.com/qingjoin/p/3967911.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值