前置芝士$:$向量及其的基本运算,如叉积(叉积运算下面用符号^表示)。
对于一个已知三点坐标的三角形,其面积是可以算出来的。
设点$c$为原点$(0,0)$
$S_{\Delta}=\frac{|\vec{a}|\times |\vec{b}|\times\sin (\theta)}{2}=\frac{\vec{a}~\hat{}~\vec{b}}{2}=\frac{\left|x_{1}\times y_{2}-x_{2}\times y_{1}\right|}{2}$
对于任意多边形
$S=\frac{\left| \sum_{1}^{n-1}(x[i]\times y[i+1]-x[i+1]\times y[i])+x[n]\times y[1]-x[1]\times y[n]\right|}{2}$
$ps:$注意绝对值不要忘。
来张图
在网上并没有找到什么严格的证明,但是如果自己手玩过就会发现这样做是对的。
其中标出的$a$部分(不包括多边形本身)被重复算了两次,一次加,一次减,而多边形本身只被算了一次,符合题意。
如果点的坐标不是按顺序依次给出的又该怎么办呢?
$1.$所给多边形为凹包(或者不给说明,凸包和凹包都有可能):
如果点不是按照顺序依次给出的,那么所构成的多边形一定不唯一(画画就明了),所以点一定是按顺序给出的
$2.$所给多边形为凸包:
我们可以先将点按极角排序,就可套用公式了,(凸包的点极角排序后多边形的顶点是依次有序的,且多边形一定是唯一的)
1 |
|