這是好幾年前曾經寫過部落格留下的資料,現在重新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;
}





