首先先讨论一下,对于一个三角形如何求面积:
很明显,S = |b| * |c| * |sinA| / 2 = | b × c | / 2;
学过叉积的都懂,由三角形的两个边向量就可以求出面积, 那么对于一个多边形呢(不规则的那种):
可以分解为S△ABC+S△ACD+S△ADE+S△AEF;
这个假如分解出来的话,单纯的看面积会重复算S△ABC,所以引入有向面积的概念;
简单点说,回到三角形的问题上,三角形的面积能够用叉积来表示,但是这个叉积是取模的,现在顺时针读取多边形的顶点来构造三角形,将他们的叉积相加,就能得到这个多变性的总面积了。
比如上图,S△ABC + S△ACD + S△ADE中,△ABC的叉积是和另外两个相反的,正好可以抵消掉,最后结果取模就是多边形的面积。
例如HDU2036
#include#include #include #include #include #include