三角形求面积的一种算法

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:50:47
今天的网上看到很多人说三角形有这样的求面积方法:已知A(x1,y1)B(x2,y2)C(x3,y3)三点的面积公式为 |x1 x2 x3| S(A,B,C) = |y1 y2 y3| * 0.5 |1 1 1 | (当三点为逆时针时为正,顺时针则为负的) 请问高手是有这样方法吗?是矩阵吗?我没学过矩阵,能把这个公式转换成一个最简单的形式吗?谢谢~

向量AB = [x2 - x1, y2 - y1]
向量AC = [x3 - x1, y3 - y1]

三角形ABC的面积 = 0.5|AB||AC|sin(角BAC)
【|AB|为向量AB的模,也就是向量AB的长度】

= 0.5*|向量AB与向量AC的叉积|

= 0.5*|(x2 - x1)(y3 - y1) - (y2 - y1)(x3 - x1)|
【最后的这个|.|是绝对值】

----------------
从矩阵角度讲,
det[ x1,x2,x3; y1,y2,y3; 1, 1, 1 ]
【其中,det[D]表示矩阵D的行列式,这个矩阵的第1行元素分别为x1,x2,x3;第2行元素分别为y1,y2,y3;第3行元素分别为1,1,1】

= det[x1,x2 - x1, x3 - x1; y1, y2 - y1, y3 - y1; 1, 0 ,0]

= det[x2 - x1, x3 - x1; y2 - y1, y3 - y1]

= (x2 - x1)(y3 - y1) - (y2 - y1)(x3 - x1)

所以,
三角形ABC的面积

= 0.5*|(x2 - x1)(y3 - y1) - (y2 - y1)(x3 - x1)|

= 0.5*|det[ x1,x2,x3; y1,y2,y3; 1, 1, 1 ]|

【其实不用考虑3点的顺序,只要在最后加上绝对值就行了】

的确可以用行列式方法求
以下是向量的方法,希望能帮到你:

第一步:把三条边AB,BC,AC的向量用坐标表示出来

第二步:根据边的向量把三条边的长度|AB|,|BC|,|AC|(即向量的模)算出!

第三步:根据cosA=AB.AC/|AB||AC| 其中(AB.AC为向量的向量积)算出sinA

第四步:SABC=(1/2)*AB*AC*sinA

<