這是好幾年前曾經寫過部落格留下的資料,現在重新po上來跟有需要的人分享

還記得三角函數嗎?如果忘了看一下說明圖溫習一下吧!

得到兩點之間的角度

/*得到兩點之間的距離*/
float getDistance(float x1,float y1,float x2,float y2)
{
    float fAdj;//鄰邊長度
    float fOpp;//對邊長度
    float fHyp;//斜邊長度
    fAdj = x2 - x1;
    fOpp = y2 - y1;
    fHyp = sqrt(pow(fAdj,2) + pow(fOpp,2));
}

得到兩點之間的角度

/*得到兩點之間的角度*/
float getAngle(float x1,float y1,float x2,float y2)
{
    float x,y,fHyp,cos,rad,deg;
    x = x2 - x1;
    y = y2 - y1;

    fHyp = sqrt(pow(x,2) + pow(y,2));

    cos = x / fHyp;
    rad = acos(cos);

    deg = 180/(M_PI / rad);

    if(y <0)
    {
        deg = -deg;
    }
    else if((y == 0) && (x <0))
    {
        deg = 180;
    }

    return deg;
}

已知A點、半徑(斜邊)、角度,求C點 — 沿著圓的弧邊的點

/*已知A點、半徑(斜邊)、角度,求C點 -- 沿著圓的弧邊的點*/
//varDegrees = 度 or Angle 角度
//varRadius = 半徑
//varCenter = A點 or圓心
POINT GetCoordinate(float varDegrees,float varRadius,POINT varCenter)
{
    POINT pointCoordinate;
    float varRadians;//varRadians弧度
    varRadians = varDegrees * (M_PI / 180);  //M_PI = 3.14159265358979
    pointCoordinate.x = varRadius * cos(varRadians) + varCenter.x;//靠著圓邊的X
    pointCoordinate.y = varRadius * sin(varRadians) + varCenter.y;//靠著圓邊的Y
    return pointCoordinate;
}

Tagged : , ,

你可能會感興趣

留下迴響





*