最近在看mesh网格参数化的相关论文,发现里面有一些基础的关于三角形的基础知识。所以整理一下防止以后再遇到又要一个个单独的找。
1.已知三角形三个顶点求三角形面积
先介绍一下三维中的两点之间距离之式,
和二维的几乎一样:
d = sqrt((x0-x1)^2 + (y0-y1)^2 + (z0-z1)^2)
现在介绍叉乘,
叉乘在定义上有:两个向量进行叉乘得到的是一个向量,方向垂直于这两个向量构成的平面,大小等于这两个向量组成的平行四边形的面积。在直角座标系[O;i,j,k]中,i、、k分别为X轴、Y轴、Z轴上向量的单位向量。设P0(0,0,0),P1(x1,y1,z1),P2(x2,y2,z2)。因为是从原点出发,所以向量P0P1可简记为P1,向量P0P2可简记为P2。依定义有:
|i j k |
P1×P2 = |x1 y1 z1|
|x2 y2 z2|
展开,得到:上式
= 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为原点,进行坐标平移,向量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))
| 1 1 1 |
= |x1-x0 y1-y0 z1-z0|
|x2-x0 y2-y0 z2-z0|
它的一半即为所要求的三角形面积S。
先介绍一下叉乘的概念,两个向量a和b的叉乘写作a×b(有时也被写成a∧b ,避免和字母x混淆)。
坐标运算




[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。依定义有:在直角座标系[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。依定义有:

设三角形三点A(x1,y1)B(x2,y2)C(x3,y3),已知点M(x,y),
1,先求出三个向量MA,MB,MC.
2,计算MA X MB,MB X MC,MC X MA (X表叉乘)
3,如果此三组的向量叉乘的结果都是同号的(或都正,或都负),即方向相同的,则说明点M在三角形每条边的同侧,即内部。否则必在外部!