三維凸包板子 hdu 4273

2021-08-09 00:18:50 字數 1536 閱讀 2363

/*

hdu 4273 rescue

給乙個三維凸包,求重心到表面的最短距離

模板題:三維凸包+多邊形重心+點麵距離

*/#include#include#include#include#includeusing namespace std;

const int maxn=550;

const double eps=1e-8;

struct point

point(double xx,double yy,double zz):x(xx),y(yy),z(zz){}

//兩向量之差

point operator -(const point p1)

//兩向量之和

point operator +(const point p1)

//叉乘

point operator *(const point p)

point operator *(double d)

point operator / (double d)

//點乘

double operator ^(point p)

};struct ch3d

; //初始頂點數

int n;

//初始頂點

point p[maxn];

//凸包表面的三角形數

int num;

//凸包表面的三角形

face f[8*maxn];

//凸包表面的三角形

int g[maxn][maxn];

//向量長度

double vlen(point a)

//叉乘

point cross(const point &a,const point &b,const point &c)

//三角形面積*2

double area(point a,point b,point c)

//四面體有向體積*6

double volume(point a,point b,point c,point d)

//正:點在麵同向

double dblcmp(point &p,face &f)

void deal(int p,int a,int b)}}

void dfs(int p,int now)//遞迴搜尋所有應該從凸包內刪除的面

bool same(int s,int t)

}if(flag)return;

flag=true;

//使前三個點不共線

for(i=2;ieps)

}if(flag)return;

flag=true;

//使前四個點不共面

for(int i=3;ieps)

}if(flag)return;

//*****************************************

for(i=0;i<4;i++)

for(i=4;ieps)}}

tmp=num;

for(i=num=0;i

hdu 4273 Rescue(三維凸包重心)

裸的三維凸包重心到表面的最近距離。include include include include include include include include include include include include include include define ff i,a,b for i...

hdu3662 三維凸包的面的個數

include include include includeusing namespace std define n 600 define eps 1e 8 struct tpoint tpoint double x,double y,double z x x y y z z tpoint ope...

uvalive5090 三維凸包

題意 給出一些三維的點,求出乙個凸包,輸出凸包有多少個表面。思路 模板。隊友找了乙個巨全面的模板,貼過來。include include include include includeusing namespace std const int maxn 550 const double eps 1e...