对于不同的场合,每个公式都有自己的优势,若是已知三个顶点坐标a(x1,y1), b(x2,y2), c(x3,y3),若要求三点围成的三角形的面积,对计算机而言这个公式应该是最适合的:
S = 1/2 * |(x2 – x1) * (y3-y1) – (y2 – y1) * (x3 – x1)|
相信许多人对这条公式并不陌生,下面我按照自己的理解推导一下这个公式:
第一种理解:
已知:三角形三个顶点及坐标a(x1,y1), b(x2,y2), c(x3,y3)
因为我们的目的是求面积,所以三角形的位置是无所谓的,首先,保持三角形整体不变,捉住三角形的某一个顶点,把它拖到坐标原点,如下图,这里就以点a为例,经过这样的操作后三点坐标就变成了a(0,0), b(x2-x1, y2-y1), c(x3-x1, y3-y1)。

把三角形整个捉走干什么呢,其实是为了得到两个向量:
把边ab,边ac分别看成向量b=(x2-x1, y2-y1, 0)和向量c=(x3-x1, y3-y1, 0),这时先回忆一下向量叉乘:
两个向量叉乘的结果是一个新向量,这个新向量垂直于原向量组成的平面,并且新向量的长度等于原向量合成的平行四边形的面积。
因为向量b,向量c 在XOY平面,所以叉乘得到的向量一定落在Z轴上,设新向量d = (0 ,0 , z),|z| 便是向量b,c 合成的平行四边形的面积,所以平行四边形的一半,|z|/2便是我们要求的三角形abc的面积。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230525.html原文链接:https://javaforall.net
