1
已知三角形三点坐标,求三角形的面积
先介绍一下三维中的两点之间距离之式,和二维的几乎一样:d=sqrt((x0-x1)^2
+(y0-y1)^2+(z0-z1)^2)
再介绍叉乘,中心内容!叉乘在定义上有:两个向量进行叉乘得到的是一个向量,
方向垂直于这两个向量构成的平面,大小等于这两个向量组成的平行四边形的面
积。
在直角座标系[O;i,j,k]中,i、j、k分别为X轴、Y轴、Z轴上向量的单位向量。
设P0(0,0,0),P1(x1,y1,z1),P2(x2,y2,z2)。因为是从原点出发,所以向量P0P1
可简记为P1,向量P0P2可简记为P2。依定义有:
|ijk|
P1×P2=|x1y1z1|
|x2y2z2|
展开,得到:
上式=iy1z2+jz1x2+kx1y2-ky1x2-jx1z2-iz1y2
=(y1z2-y2z1)i+(x2z1-x1z2)j+(x1y2-x2y1)k
按规定,有:单位向量的模为1。可得叉积的模为:
|P1×P2|=y1z2-y2z1+x2z1-x1z2+x1y2-x2y1
=(y1z2+x2z1+x1y2)-(y2z1+x1z2+x2y1)
开始正式内容。我们设三角形的三个顶点为A(x0,y0,z0),B(x1,y1,z1),
C(x2,y2,z2)。我们将三角形的两条边AB和AC看成是向量。然后,我们以A为
2
原点,进行坐标平移,得到向量B(x1-x0,y1-y0,z1-z0),向量
C(x2-x0,y2-y0,z2-z0)。
①在三维的情况下,直接代入公式,可得向量B和向量C叉乘结果的模为:
|B×C|=((y1-y0)*(z2-z0)+(z1-z0)*(x2-x0)+(x1-x0)*(y2-y0))-
((y2-y0)*(z1-z0)+(z2-z0)*(x1-x0)+(x2-x0)*(y1-y0))
|111|
=|x1-x0y1-y0z1-z0|
|x2-x0y2-y0z2-z0|
它的一半即为所要求的三角形面积S。
还有一种比较简单的写法。将向量AB和AC平移至原点后,设向量B为
(x1,y1,z1),向量C为(x2,y2,z2),则他们的叉乘所得向量P为(x,y,z),其中:
|y1z1||z1x1||x1y1|
x=||y=||z=||
|y2z2||z2x2||x2y2|
然后用三维中的两点之间距离公式,求出(x,y,z)与(0,0,0)的距离,即为向量P
的模,它的一半就是所要求的面积了。
以上公式都很好记:x分量由y,z分量组成,y分量由z,x分量组成,z分量
由x,y分量组成,恰好是循环的。坐标平移一下就好了。
②在二维的情况下,我们可以取z=0这个平面,即令z1=z2=0,且
|P1×P2|=x1y2-x2y1
3
|x1y1|
=||
|x2y2|
所以:
|B×C|=(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)
|x1-x0y1-y0|
=||
|x2-x0y2-y0|
它的一半即为所要求的三角形的面积S。
注意,用行列式求出来的面积是带符号的。如果A,B,C是按顺时针方向给出,
则S为负;按逆时针方向给出,则S为正。
以二维的情况为例,三维亦同:
A(0,0)B(0,1)C(1,0)(A,B,C按顺时针方向给出)
S=((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))/2;
=((0-0)*(0-0)-(1-0)*(1-0))/2
=
A(1,0)B(0,1)C(0,0)(A,B,C按逆时针方向给出)
S=((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))/2;
=((0-1)*(0-0)-(0-1)*(1-0))/2
=
4
如果你不需要符号的话,再求一下绝对值就好了。这样也不用去管给出的点的顺
序了。
以上是利用叉乘。其实还有一招,那就是海伦公式:
利用两点之间距离公式,求出三角形的三边长a,b,c后,令p=(a+b+c)/2。
再套入以下公式就可以求出三角形的面积S:
S=sqrt(p*(p-a)*(p-b)*(p-c))
看起来好像比上面的都要简单……各位看客不要打我!
推荐:在二维的时候使用叉乘公式,三维的时候使用海伦公式~~~不过如果是
需要符号的情况时,就只能使用行列式的计算公式了。
本文发布于:2022-12-11 10:41:13,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/85212.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |