分治法解决凸包问题

问题

        设p1=(x1,y1),p2=(x2,y2),...,pn=(xn,yn)是平面上n个点构成的集合S,凸包问题是为集合S构造最小凸多边形。

思路

        设p1=(x1,y1),p2=(x2,y2),...,pn=(xn,yn)按照x轴坐标升序排列,则最左边的点p1和最右边的点p2一定是该集合的凸包顶点。如图1所示。设p1pn是经过点p1和pn的直线,这条直线把集合S分成两个子集:S1是位于直线上侧和直线上的点构成的集合,S2是位于直线下侧和直线上的点构成的集合。S1的凸包由下列线段构成:以p1和pn为端点的线段构成的下边界,以及由多条线段构成的上边界,这条上边界成为上包。类似地,S2中的多条线段构成的下边界称为下包。整个集合S的凸包是由上包和下包构成的。

        下面讨论如何求解上下包。对于集合S1,S1中所有直线p1pm上侧的点构成集合S11,S1中所有在直线pmpn上侧的点构成集合S12,包含在三角形pmp1pn之中的点可以不考虑了。递归地继续构造集合S11的上包和集合S12的上包,然后将求解过程中得到的所有最远距离的点连接起来,就可以得到集合S1的上包。同理,可求得集合S2的下包。如图2所示

      

            图1 点集合S的上包和下包      

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moyu18_06_12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值