您的位置:首页 > 其它

旋转卡壳模板

2016-01-28 13:32 218 查看
void CirAndCut(Point psn[],int n,Point psm[],int m)

{

int nid=0,mid=0;

for(int i=1;i<n;i++)

if(psn[i].y>psn[nid].y)

{

nid=i;

}

for(int i=1;i<m;i++)

if(psm[i].y<psm[mid].y)

{

mid=i;

}

//找到点集n中最上点,m中的最下点。

//l 为水平向右的向量

for(int ii=0;ii<n+m;ii++)

{

//第一步判断谁先 滚起来

Point nextn,nextm;

nextn = psn[(nid+1)%n];

nextm = psm[(mid+1)%m];

if( (nextn-psn[nid])*(psm[mid]-nextm)>0 )

{

//n先滚

nid = (nid+1)%n;

}

else

{

mid= (mid+1)%m;

}

//这里就可以得到对踵点

/*

Line l1,l2;

l1.p1 = psn[nid];

l1.p2 = psn[ (nid-1+n)%n ];

l2.p1 = psm[mid];

l2.p2 = psm[ (mid-1+m)%m ];

ans = min(ans,Dis(l1, l2));

*/

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: