原理簡單講解
我們知道三角形的面積=1/2×a×b×sinC,其中C爲ab兩邊的夾角。
運用叉乘公式(matlab裏用cross()函數實現),我們可以得到absinC,但這時候結果還是一個三維向量,用norm()函數取向量的模長即可。
求三角形面積函數
function s=area(A,B,C)
if length(A)==2 %輸入三點是二維平面座標,變成三維
AB=[B-A 0];
BC=[C-B 0];
elseif length(A)==3 %輸入三點是三維空間座標
AB=B-A;
BC=C-B;
end
Z=cross(AB,BC); %叉乘
s=1/2*norm(Z); %取模
end
測試
- 輸入二維座標結果
輸入:
A=[2 2];
B=[0 0];
C=[2 -2];
s=area(A,B,C)
輸出:
- 輸入三維座標結果
輸入:
A=[0 0 0];
B=[1 1 1];
C=[0 0 1];
s=area(A,B,C)
輸出: