#includeusingnamespace
std;
#define maxn 510
const
double eps=1e-8
; int sig(double
d)
struct
point
point(
double x,double
y):x(x),y(y){}
bool
operator==(const point&p)const
};
double
cross(point o,point a,point b)
double area(point* ps,int
n)
return res/2.0
; }
int linecross(point a,point b,point c,point d,point&p)
//多邊形切割
//用直線ab切割多邊形p,切割後的在向量(a,b)的左側,並原地儲存切割結果
//如果退化為乙個點,也會返回去,此時n為1
void polygon_cut(point*p,int&n,point a,point b)
n=0;
for(int i=0;i)
if(!i||!(pp[i]==pp[i-1
]))
p[n++]=pp[i];
while(n>1&&p[n-1]==p[0])n--;
} //
返回三角形oab和三角形ocd的有向交面積,o是原點
//double
intersectarea(point a,point b,point c,point d);
int n=3
; polygon_cut(p,n,o,c);
polygon_cut(p,n,c,d);
polygon_cut(p,n,d,o);
double res=fabs(area(p,n));
if(s1*s2==-1) res=-res;return
res;
} //
求兩多邊形的交面積
double intersectarea(point*ps1,int n1,point*ps2,int
n2)
} return res;
} //
求兩個任意簡單多邊形的並面積
point ps1[maxn],ps2[maxn];
intn1,n2;
intmain()
return
0;
}
兩個簡單多邊形求交 CGAL
兩個多邊形求交的實現需要幾個模組 cgal中有insect函式,但是必須要求使用cgal exact predicates exact constructions kernel 本人出於其他想法,沒有把基於exact predicates inexact constructions kernel核的...
求兩個多邊形的交面積(模板)
別人的部落格 多邊形的交,多邊形的邊一定是要按逆時針方向給出 還要判斷是凸包還是凹包,呼叫相應的函式 面積並,只要和面積減去交即可 include using namespace std const int maxn 300 const double eps 1e 8 int dcmp double...
求兩個多邊形資料 vtkPolyData 的相交線
vtkintersectionpolydatafilter 簡介 該濾波器計算兩個多邊形資料 vtkpolydata 的交集。其第乙個輸出是 交集線集 a set of lines 第二個和第三個輸出分別為第一和第二個輸入 vtkpolydata.如果需要,後兩個輸出可以被相交線分割。示例 可以看出...