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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM