旋转卡壳模板

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了旋转卡壳模板相关的知识,希望对你有一定的参考价值。

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));

         */

    }

}

以上是关于旋转卡壳模板的主要内容,如果未能解决你的问题,请参考以下文章

模板旋转卡壳求 面积最大的三角形 poj2079

旋转卡壳模板

模板旋转卡壳求两凸包最短距离

[模板] 计算几何2: 自适应Simpson/凸包/半平面交/旋转卡壳/闵可夫斯基和

[hdu3934] 凸包 旋转卡壳

NYOJ_253:LK的旅行(旋转卡壳入门)