2015-12-04 97 views
0

我通過使用atan2(-6/35)來計算角度(-6/35)。 結果是-9.7275785514016047如何從atan2角度回到座標

我們回去我使用的公式從Wikipedia

enter image description here

distance = sqrt(6*6+35*35); 
angleRelativeToPatternOrigin = -9.7275785514016047; 

double x1 = distance * cos(angleRelativeToPatternOrigin); 
double y1 = distance * sin(angleRelativeToPatternOrigin); 

我exptected得到coordinares (-6/35) 但我得到了(-33.895012797701419/10.589056022311761

所以我覺得這是不對的因爲atan2定義在象限和sincos僅限於。

這是正確的嗎? 如何做到這一點?

編輯:

現在,首先我描述一個壞的方式我的問題很抱歉。 我居然做了以下

int main(int argc, char* argv[]) 
{ 
    int x = -6; 
    int y = 35; 
    double radian = atan2(x,y); // this was wrong. atan2(y,x) is correct. 
    double degree = radian * (360/(2 * 3.14159265358979323846)); 
    double distance = sqrt(6*6+35*35); 

    double x1 = distance * cos(degree); // Wrong because I used degree 
    double y1 = distance * sin(degree); // instead of radian 

    return 0; 
} 
+4

_「我通過使用'ATAN2(計算的(-6/35)的角度-6/35)''_不,你沒有。該函數有兩個參數,而不是一個。 –

+0

@Lightness軌道上的競賽 我用-6作爲參數1和35作爲參數2 –

+0

這不是你的問題所說的。 –

回答

3

爲了既使用ATAN2函數來獲得一個角度,並再使用罪& COS要回笛卡爾座標,你需要稍微不同地使用它們,正如你已經說過的那樣。

由於LightnessRacesInOrbit和user38034都表示,atan2函數需要2個參數。第一個是y,第二個是x。

考慮以下JS片段:

var x = -6.0; 
var y = 35.0; 

var at = Math.atan2(y, x); 
console.log(at); 

var dist = (x*x) + (y*y); 
dist = Math.sqrt(dist); 
console.log(dist); 

var x1 = dist * Math.cos(at); 
var y1 = dist * Math.sin(at); 

console.log({x:x1, y:y1}); 

從此片段的輸出是:

1.740574600763235 
35.510561809129406 
Object {x: -5.999999999999998, y: 35} 
1

你在錯誤的道路使用atan2。的atan2函數聲明爲:

double atan2 (double y, double x); 

所以角度:

double angle = atan2(35, -6); // 1.74057 radians or 99.72758 degree 
+0

謝謝。 我改變了它,現在我得到99.72758度,但座標仍然是錯誤的(24.654041707636729 | 25.557351730531639) –

+0

@R_Valdez如何顯示你在做什麼,這樣有人可以告訴你它有什麼問題,而不是希望他們能猜到? –

+1

@R_Valdez C++(以及我知道的任何語言)中的所有三角函數都使用弧度,而不是度數。 '距離* cos(1.74057)'給出'-6','distance * sin(1.74057)'給出'35'。 – user38034