程式筆記: atan2 的角度值

我們可以寫一個簡單的程式,產生atan2的所取得的角度概略分佈。由於我目前所使用的是工具有Dev-C++4.9.9.0、BCB 6.0與Matlab 7.5,怕每個做的都不相同,所以我都得進行測試。

Matlab

Matlab結果如圖上的第一個矩陣,得到的是有正角度與負角度的矩陣。由於概念上用0~360來表示較度會比較好懂,因此就將atan2所得到的負角度+360得到0~360尖的角度值,如圖方矩陣。



於Matlab用的程式碼

x=repmat([-2:2], [5,1]);
y=repmat([2:-1:-2]',[1,5]);
angle=atan2(y,x)/(2*pi)*360
neg=find(angle<0); angle(neg) = angle(neg)+360


Borland C++ Builder與Dev C++

基本上這兩個工具得到的結果都是相同的,但是BCB就是不一樣(汗)

用Dev C++獲得的結果就如同Matlab,只是有負的角度,需將小於零的角度+360。



但是,BCB就是不太一樣,中間數值為(0,0)的時候,BCB會跳出DOMAIN Error的例外,而最後產生出來的數值則是NaN,也就是不將atan2(0,0)視為0,這也就得讓我去作額外的判斷工作,實在麻煩。

留言