• 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;
    }
  • 相关阅读:
    数据库水平切分(拆库拆表)的实现原理解析(转)
    json序列化 & 反序列化
    数据库工作原理
    【原创】python多线程测试接口性能
    XML解析(DOM、ElementTree)及转换为JSON
    nginx+supervisor+gunicorn+flask
    3、爬取干货集中营的福利图片
    Python多环境扩展管理
    九、frp对外提供简单的文件访问服务
    八、frps服务端与nginx可共用80端口
  • 原文地址:https://www.cnblogs.com/qingjoin/p/3967911.html
Copyright © 2020-2023  润新知