汇总篇:计算几何汇总


规定顶点逆时针方向的多边形面积为正

取原点0(0,0)

S(a,b,c,d)=S(o,a,b)+S(o,b,c)+S(o,c,d)+S(o,d,a)

图中o在外部,obc,ocd, oda全部是正的,加起来构成了5变形obcda的面积,但oab是负面积,因此最后刚好等于abcd的面积。

而如果o点在多边形内部,则四个三角形全是正面积,等式正好成立。

代码

#include<cmath>class point{public:double x;double y;point(double x_=0,double y_=0):x(x_),y(y_){} friend const point operator+(const point& p1,const point& p2){return point(p1.x+p2.x,p1.y+p2.y);};friend const point operator-(const point& p1,const point& p2){return point(p1.x-p2.x,p1.y-p2.y);};friend const point operator*(const point& p,const double& m){return point(p.x*m,p.y*m);};friend const point operator*(const double& m,const point& p){return point(p.x*m,p.y*m);};friend const point operator/(const point& p,const double& m){return point(p.x/m,p.y/m);};friend ostream& operator <<(ostream& out,point& a){printf("(%lf,%lf)",a.x,a.y);return out;};
};
typedef point vect2;//重命名,向量也是用坐标表示 class line{public:point start;point end; line(point s=point(0,0),point e=point(0,0)):start(s),end(e){}
};
double cross(point O,point A,point B){//叉乘 double oa_x=A.x-O.x;double oa_y=A.y-O.y;double ob_x=B.x-O.x;double ob_y=B.y-O.y;return oa_x*ob_y-oa_y*ob_x;
}
double polyArea(point *ex,int num){//求多边形面积 if(num<3)return 0.0;double s=0;point O;O.x=0;O.y=0;//取原点为for(int i=0;i<num;i++)s+=cross(O,ex[i],ex[(i+1)%num]);return fabs(s/2.0);//取绝对值
} 

计算几何——多边形面积相关推荐

  1. 【SSL.1213】多边形面积(difficult)(计算几何)

    多边形面积(difficult) Description 中学生杰利陶醉于数学研究.他思考的问题对于专家而言可能太多简单,但作为一个15岁的业余爱好者,他做得非常棒.他太热衷思考数学问题,以至于轻易就 ...

  2. 观星(计算几何/凸包/多边形面积)

    观星 对于平面上有n个点分为三类,要求寻找一个三角形,三个顶点分别属于这三类,求解最大面积. N<=3000 首先考虑到O(n2)O(n^2)O(n2)的枚举,然后对于另外一种考虑这个点的位置, ...

  3. 多边形面积_ssl1213_计算几何

    Description 中学生杰利陶醉于数学研究.他思考的问题对于专家而言可能太多简单,但作为一个15岁的业余爱好者,他做得非常棒.他太热衷思考数学问题,以至于轻易就学会了试用数学方法来解决碰到的问题 ...

  4. HDU 2036 改革春风吹满地(求多边形面积)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2036 改革春风吹满地 ...

  5. 【算法:数学】计算几何-多边形的重心

    转载:计算几何-多边形的重心 1. 1 累加和求重心 设平面上有N 个离散数据点( xi , yi ) ( i = 1, 2, ., n) , 其 多边形重心G( . x1, . y1) 为: 这是求 ...

  6. pku 2954 Triangle pku 1265 Area Pick定理的应用 + 叉积求多边形面积

    Pick定理证明:http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_ ...

  7. hdu2036(多边形面积)

    Description " 改革春风吹满地,  不会AC没关系;  实在不行回老家,  还有一亩三分地.  谢谢!(乐队奏乐)" 话说部分学生心态极好,每天就知道游戏,这次考试如此 ...

  8. POJ 3855 计算几何·多边形重心

    思路: 多边形面积->任选一个点,把多边形拆成三角,叉积一下 三角形重心->(x1+x2+x3)/3,(y1+y2+y3)/3 多边形重心公式题目中有,套一下就好了 计算多边形重心方法: ...

  9. 多边形面积(Area_Of_Polygons)

    原理: 任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出. 分析:  由于给出的点是相对于我们的坐标原点的坐标,每个点实际上我们可以当作一个顶点相对于原点的向量,如下图所 ...

  10. poj 1654 Area 多边形面积

    /* poj 1654 Area 多边形面积题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> # ...

最新文章

  1. 几何画板对象标签的几个疑问
  2. ARC在Release与Debug模式中内存释放的坑
  3. java中map使用非系统类作为key
  4. window 下生成SSH key
  5. PHP 简单计算器代码实现
  6. 快速排序quicksort算法细节优化(一次申请内存/无额外内存排序)
  7. C#中的高级测试驱动开发
  8. C#设计模式之十六观察者模式(Observer Pattern)【行为型】
  9. winform与数据库同步更新
  10. jfinal html页面在多个路径,jfinal不能正确加载html网页,总是报错的解决方法
  11. VBS操作IE ---(【当不使用IE时】可以使用Chrome插件,自定义JS插件操作浏览器)
  12. HTML中播放提示音
  13. Arduino-LiquidCrystal_I2C 液晶库
  14. codevs 1044 拦截导弹
  15. 红黑树-Java实现
  16. 文本相似度:A Survey of Text Similarity Approaches
  17. java实现上传文件夹
  18. Ubuntu安装Caffe .build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0
  19. 新建Python项目
  20. 转载:辗转相除法求最大公约数

热门文章

  1. kudu tablet的设计
  2. 从苏宁电器到卡巴斯基第05篇:我的创业梦
  3. python 省份排序_MySQL
  4. 代管挂账业务,没有做代管挂账确认单是否可以暂估入账
  5. Python 自带slic代码分析
  6. Linux系统下的文件和文件夹相关操作(创建/删除/修改权限)
  7. 快速排序C语言实现 - 源码详解
  8. 智慧城市顶层设计跨界思维指导方案(ppt)
  9. 百度黑洞效果实现原理
  10. 关于约束多目标MOEA/D-DAE