zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    数据访问技术系列课程 笔记(2) ADO.NET 连接方式进行数据访问
    Modern C# 系列课程笔记 第11节 深入委托和事件
    idea 将项目托管到 Git 报错:Can't finish Gitee sharing process
    ADO.Net
    WebService
    2013年了
    201301杂谈
    流程图
    出错列表
    杂谈4 2012年8月15日开
  • 原文地址:https://www.cnblogs.com/qingjoin/p/3967911.html
Copyright © 2011-2022 走看看