C++ 三角函數 function
這是好幾年前曾經寫過部落格留下的資料,現在重新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點 -- 沿著圓的弧邊的點*/
- //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;
- }











