坐标系中三角形的面积公式

在平面直角坐标系 OxyOxy 中,设点 A(x1,y1)A(x_1,y_1)B(x2,y2)B(x_2,y_2),则

SOAB=12det[x1y1x2y2]=12x1y2x2y1.S_{\triangle OAB} = \frac12 \left| \det \begin{bmatrix} x_1 & y_1 \\ x_2 & y_2 \end{bmatrix} \right| = \frac12 |x_1 y_2 - x_2 y_1|.

这个公式的证明有很多,所需要的预备知识也不尽相同.

下面按照所用到的知识的难度,有浅到深,给出几种不同的证明方法.

1. 初中的证明方法

本质上,这种方法就是割补法.

ABxAB \perp x 轴,如图1

图1

x1=x2x_1 = x_2,直线 ABABxx 轴的交点为 M(x1,0)M(x_1,0),所以

SOAB=12ABOM=12y1y2x1=12x1y2x2y1.\begin{aligned} S_{\triangle OAB} &= \frac12 |AB|\cdot |OM| \\[2ex] &= \frac12 |y_1-y_2| \cdot |x_1| \\[2ex] &= \frac12 |x_1 y_2 - x_2 y_1|. \end{aligned}

AB⊥̸xAB \not\perp x 轴,如图2

图2

设直线 ABAByy 轴的交点为 N(0,b)N(0,b),则

SOAB=12ONx1x2=12bx1x2.(i)\begin{aligned} S_{\triangle OAB} &= \frac12 |ON| \cdot |x_1-x_2| \\[2ex] &= \frac12 |b| \cdot |x_1-x_2|. \end{aligned}\tag{i}

设直线 ABAB 的解析式为 y=kx+by=kx+b,则

{kx1+b=y1kx2+b=y2\begin{cases} kx_1+b=y_1 \\ kx_2+b=y_2 \end{cases}

解得

{k=y1y2x1x2b=x1y2x2y1x1x2\begin{cases} k=\dfrac{y_1-y_2}{x_1-x_2} \\[2ex] b=\dfrac{x_1y_2-x_2y_1}{x_1-x_2} \end{cases}

所以

SOAB=12x1y2x2y1x1x2x1x2=12x1y2x2y1.\begin{aligned} S_{\triangle OAB} &= \frac12 \left|\frac{x_1y_2-x_2y_1}{x_1-x_2}\right| \cdot |x_1-x_2| \\[2ex] &= \frac12 \left|x_1 y_2 - x_2 y_1\right|. \end{aligned}

NN 点不在线段 ABAB 上的时候,(i)(\mathrm{i}) 式依然是成立的,所以结论不变.

2. 高中的证明方法

2.1. 利用向量的投影

这种方法是利用向量的投影,来求出三角形的高.

图3

图3

向量 u=(y1,x1)\boldsymbol{u} = (-y_1,x_1) 是由 OA=(x1,y1)\overrightarrow{OA} = (x_1,y_1) 逆时针旋转 9090^\circ 得到的向量,所以 OAOA 边上的高为 h=OBuuh = \dfrac{\left| \overrightarrow{OB}\cdot\boldsymbol{u} \right|}{\left| \boldsymbol{u} \right|}

所以

SOAB=12OAOBuu=12OBu=12x1y2x2y1.\begin{aligned} S_{\triangle OAB} &= \frac12 |OA| \cdot \frac{\left| \overrightarrow{OB}\cdot\boldsymbol{u} \right|}{\left| \boldsymbol{u} \right|} \\[2ex] &= \frac12 \left| \overrightarrow{OB}\cdot\boldsymbol{u} \right| \\[2ex] &= \frac12 \left|x_1 y_2 - x_2 y_1\right|. \end{aligned}

2.2. 利用向量的夹角

直接利用向量的点积,求出三角形的角.

SOAB=12OAOBsinAOB=12OAOB1cos2AOB=12OAOB1(OAOBOAOB)2=12(OAOB)2(OAOB)2\begin{aligned} S_{\triangle OAB} &= \frac12 |OA| \cdot |OB| \cdot \sin\angle AOB \\[2ex] &= \frac12 |OA| \cdot |OB| \cdot \sqrt{1-\cos^2\angle AOB} \\[2ex] &= \frac12 \left|\overrightarrow{OA}\right| \cdot \left|\overrightarrow{OB}\right| \cdot \sqrt{1-\left(\frac{\overrightarrow{OA}\cdot\overrightarrow{OB}}{\left|\overrightarrow{OA}\right| \cdot \left|\overrightarrow{OB}\right|}\right)^2} \\[2ex] &= \frac12 \sqrt{\left(\left|\overrightarrow{OA}\right| \cdot \left|\overrightarrow{OB}\right|\right)^2-\left(\overrightarrow{OA}\cdot\overrightarrow{OB}\right)^2} \end{aligned}

将坐标带入,可得

SOAB=12(x12+y12)(x22+y22)(x1x2+y1y2)2=12x12y22+x22y122x1x2y1y2=12(x1y2x2y1)2=12x1y2x2y1\begin{aligned} S_{\triangle OAB} &= \frac12 \sqrt{\left(x_1^2+y_1^2\right)\left(x_2^2+y_2^2\right)-\left(x_1x_2+y_1y_2\right)^2} \\[2ex] &= \frac12 \sqrt{x_1^2y_2^2+x_2^2y_1^2-2x_1x_2y_1y_2} \\[2ex] &= \frac12 \sqrt{\left(x_1y_2-x_2y_1\right)^2} \\[2ex] &= \frac12 \left|x_1y_2-x_2y_1\right| \end{aligned}

3. 大学的证明方法

利用向量的叉积或者混合积的几何意义,可以很容易地得到我们所需要的公式.

3.1. 利用向量的叉积

考虑空间坐标系 OxyzOxyzOA=(x1,y1,0)\overrightarrow{OA} = (x_1,y_1,0)OB=(x2,y2,0)\overrightarrow{OB} = (x_2,y_2,0),则

SOAB=12OAOBsinAOB=12OA×OB=12[ijkx1y10x2y20]=12x1y1x2y2k=12x1y2x2y1.\begin{aligned} S_{\triangle OAB} &= \frac12 |OA| \cdot |OB| \cdot \sin\angle AOB \\[2ex] &= \frac12 \left| \overrightarrow{OA} \times \overrightarrow{OB} \right| \\[2ex] &= \frac12 \left| \begin{bmatrix} \boldsymbol{i} & \boldsymbol{j} & \boldsymbol{k} \\ x_1 & y_1 & 0 \\ x_2 & y_2 & 0 \end{bmatrix} \right | \\[2ex] &= \frac12 \left| \left| \begin{matrix} x_1 & y_1 \\ x_2 & y_2 \end{matrix} \right| \boldsymbol{k} \right| \\[2ex] &= \frac12 \left|x_1y_2-x_2y_1\right|. \end{aligned}

3.2. 利用向量的混合积

我们把三个点都放到平面 z=1z=1 上,设 P(0,0,1)P(0,0,1)A(x1,y1,1)A(x_1,y_1,1)B(x2,y2,1)B(x_2,y_2,1),则

SPAB=3VOPAB=316OP(OA×OB)=12det[001x1y11x2y21]=12det[x1y1x2y2].\begin{aligned} S_{\triangle PAB} &= 3V_{O-PAB} \\[2ex] &= 3\cdot \frac16 \left| \overrightarrow{OP} \cdot \left( \overrightarrow{OA} \times \overrightarrow{OB} \right) \right| \\[2ex] &= \frac12 \left|\det \begin{bmatrix} 0 & 0 & 1 \\ x_1 & y_1 & 1 \\ x_2 & y_2 & 1 \\ \end{bmatrix} \right| \\[2ex] &= \frac12 \left|\det \begin{bmatrix} x_1 & y_1 \\ x_2 & y_2 \end{bmatrix} \right|. \end{aligned}

4. 推广

对于一般的 ABC\triangle ABC,设点 A(x1,y1)A(x_1,y_1)B(x2,y2)B(x_2,y_2)C(x3,y3)C(x_3,y_3),则

AB=(x2x1,y2y1),AC=(x3x1,y3y1),\begin{aligned} \overrightarrow{AB} &= (x_2-x_1,y_2-y_1), \\ \overrightarrow{AC} &= (x_3-x_1,y_3-y_1), \end{aligned}

所以

SABC=12det[x2x1y2y1x3x1y3y1].S_{\triangle ABC} = \frac12 \left|\det \begin{bmatrix} x_2-x_1 & y_2-y_1 \\ x_3-x_1 & y_3-y_1 \end{bmatrix} \right|.

这种方法相当于把 ABC\triangle ABC 沿向量 AO\overrightarrow{AO} 平移到了原点.

或者考虑空间坐标系 OxyzOxyz,把三个点都放到平面 z=1z=1 上,设点 A(x1,y1,1)A(x_1,y_1,1)B(x2,y2,1)B(x_2,y_2,1)C(x3,y3,1)C(x_3,y_3,1),则

SABC=3VOABC=316OA(OB×OC)=12det[x1y11x2y21x3y31].\begin{aligned} S_{\triangle ABC} &= 3V_{O-ABC} \\[2ex] &= 3\cdot \frac16 \left| \overrightarrow{OA} \cdot \left( \overrightarrow{OB} \times \overrightarrow{OC} \right) \right| \\[2ex] &= \frac12 \left|\det \begin{bmatrix} x_1 & y_1 & 1 \\ x_2 & y_2 & 1 \\ x_3 & y_3 & 1 \end{bmatrix} \right|. \end{aligned}

由行列式的性质可知,这两个式子是等价的.