2016-02-28 137 views
0

好的代數和trig並不是我的強項,所以這裏是我需要做的。給定旋轉角度計算圓上的位置

我有其以度爲單位從180到-180(360個)的圓

鑑於圓的中心點保持不變,CX中,Cy。 角度變化從-180到+180

我需要找到一個點,無論給定的角度是+ 3個單位遠,其在90度位置和270度位置(從給定的度)

所以像...
角度= 0 點1 - > X = 0,Y -3 點2 - > X = 0,Y + 3

而如果角度爲90說(其提供測量順時針) 點1→x = -3,y = 0點2→x = 3,y = 0

我需要的是一個接受Angle的論壇,然後告訴我我的x/y應該離原點3個單位。

我試過了:編輯更新爲使用Java的雙精度。 (double(double))= Cx + 3 * Math.cos((d + 90)* Math.PI/180);'

「雙Y =賽揚+ 3 * Math.sin((d + 90)* Math.PI/180);`

這給了我混合的結果,我的意思是有時是在我認爲它應該是而其他時間則相當不對。

Assuming Cx = 0.500, Cy = 0.500 
Sample Data:  Result: 
Deg = 0   x = 2/y = 5 
Deg = 90   x = -1/y = 2 
Deg = 125   x = -0.457/y = 0.297 
Deg = 159   x = 0.924/y = -0.800 

我意識到我現在只計算一點,但是您對如何獲得第一點的工作有任何建議嗎?從我開始的任何程度說90度?

+0

你真的想要整數結果的時候,在一般情況下浮點數會更精確嗎?如果是這樣,你怎麼做四捨五入? – GavinBrelstaff

+0

我的大部分輸入將是一個整數或者最多的唯一精度是.5,所以雙重結果足夠精確。對於這個項目。 – user3305347

+0

你的公式是正確的。你如何計算你的結果?使用計算器?使用編程語言?使用Excel?因爲你得到了錯誤的答案。 – GavinBrelstaff

回答

0
x = Cx + r * Math.cos((d+90) * Math.PI/180); 

y = Cy + r * Math.sin((d+90) * Math.PI/180); 

似乎這是我試圖完成的正確公式。這將爲Cx/Cy的原點添加半徑r,然後計算度數+90並轉換爲弧度。一旦所有魔法發生,您就剩下一個x/y座標90度你開始了。