MATLAB 計算離散點間的夾角

最近的項目中想要在一組離散數組中找到在一條直線上的點,於是想到每三個點計算一下夾角,如果在一條直線上,那麼夾角應該在180°左右。

代碼實現如下:

%%數據x,y,z爲存放用戶數據的mx1的數組
%% 每三個點求夾角
for I=1:m-2
a2 = (y(I)-y(I+1))*(y(I)-y(I+1))+(z(I)-z(I+1))*(z(I)-z(I+1));
b2 = (y(I+2)-y(I+1))*(y(I+2)-y(I+1))+(z(I+2)-z(I+1))*(z(I+2)-z(I+1));
c2 = (y(I)-y(I+2))*(y(I)-y(I+2))+(z(I)-z(I+2))*(z(I)-z(I+2));
a = sqrt(a2);
b = sqrt(b2);
c = sqrt(c2);
pos(I) = (a2+b2-c2)/(2*a*b);                                               %求出餘弦值
angle(I)  = acos(pos(I));                                                  %餘弦值裝換爲弧度值
realangle(I)  = angle(I)*180/pi;                                           %弧度值轉換爲角度值
disp(realangle(I));
end

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章