对于一个多边形(可以为凹多边形)求其面积可以用叉积面积法,其证明过程十分简单,对于任意3个点A,B,C若其点成逆时针给出,那么三角形的面积就是,设A点是原点:(xb*yc-xc*yb)/2;这其实就是向量求面积得来的,这个结果为正,当点A,B,C顺时针给出时,其面积就会为负。我们求一个多边形面积时,我们就可以取o点(原点)来求,每求次按顺序取出多边形的连续两点,对所求结果求和即为面积。注意(最后一个点和第一个点也要算进去,故,求和次数是n次,n为多边形边数)基础题练手:http://acm.hdu.edu.cn/showproblem.php?pid=2036 多边形叉积面积法详解博客:https://blog.csdn.net/Adusts/article/details/80546770
ac代码:(自定义ak函数是给出3边求面积的海伦公式,bk是叉积函数)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<stack> 6 #include<algorithm> 7 #include<vector> 8 #include<cmath> 9 #define MAX(a,b) (((a)>(b))?(a):(b))