1
我有一個2D矢量字段,我想對矢量字段進行顏色編碼,以便每個矢量方向以不同的顏色顯示。假設我的數據是DataX和DataY。目前,我做(在MATLAB):顏色編碼矢量字段
R = DataX.^2 + DataY.^2;
theta1 = acos(DataX ./ R);
theta2 = asin(DataY ./ R);
surf(x,y,theta1); colormap jet; shading interp
figure; surf(x,y,theta2); colormap jet; shading interp
我遇到的問題是,我不能向量,其中x或y分量是零之間進行區分。例如,彩條的比例看起來像(左,使用arcsin,右使用arcos)。當使用arcsin時,當DataY爲零(水平向量)時,無論向量是向左還是向右,arcsin(0)都會給出0。
使用反正切或極座標arccotangent定義給予了應有的零個錯誤劃分,甚至更壞的結果。我正在尋找一種算法,可以讓我區分看似簡併的矢量。我嘗試過將arccos和arcsin結果結合起來,但是我一直沒能找到一個好的方法來做到這一點。
我也想知道如何將這個概念擴展到3D。
謝謝!
問題仍然存在。 DataX = 0,DataY = 1給出0的角度.DataX = 0,DataY = -1給出角度0. –
編號atan2映射(0,1) - > 0,(1,0) - > pi/2, (0,-1) - > pi,( - 1,0) - > -pi/2 –
我認爲這在數學上是真實的。但在計算上,0/1或0/-1將首先評估,給你零。那麼當我們做atan(0)時,無論y座標是什麼,我們都會得到0。我正在用MATLAB做。在另一種語言中它有什麼不同? –