/*
* 多边形的交,多边形的边一定是要按逆时针方向给出
* 还要判断是凸包还是凹包,调用相应的函数
* 面积并,只要和面积减去交即可
*/
#include <bits/stdc++.h>
using namespace std;
const int maxn = //300;
const double eps = 1e-8;
int dcmp(double x)
{
if(x > eps) return 1;
return x < -eps ? -1 : 0;
}
struct Point
{
double x, y;
};
double cross(Point a,Point b,Point c) ///叉积
{
return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);
}
Point intersection(Point a,Point b,Point c,Point d)
{
Point p = a;
double t =((a.x-c.x)*(c.y-d.y)-(a.y-c.y)*(c.x-d.x))/((a.x-b.x)*(c.y-d.y)-(a.y-b.y)*(c.x-d.x));
p.x +=(b.x-a.x)*t;
p.y +=(b.y-a.y)*t;
return p;
}
//计算多边形面积
double PolygonArea(Point p[], int n)
{
if(n < 3) return 0.0;
double s = p[0].y * (p[n - 1].x - p[1].x);
p[n] = p[0];
for(int i = 1; i < n; ++ i)
s += p[i].y * (p[i - 1].x - p[i + 1].x);
return fabs(s *
计算几何 多边形的交与并
最新推荐文章于 2023-12-18 13:00:09 发布
这篇博客介绍了计算几何中多边形交并的算法,包括如何处理多边形的交集和面积并集。通过定义点、叉积函数以及计算多边形面积的方法,实现了凸包和简单多边形的交集面积计算。最后,给出了一个读取输入并计算两个多边形交并面积的主程序示例。
摘要由CSDN通过智能技术生成