项目记录-凸包修正

圆的凸包修正思路:

依据圆形边界上各点的坐标容易算出圆的外围矩形的左上角顶点O的坐标(lx, ly)

算出左上角顶点坐标

以O点为原点,重新给所有点进行排序,排序的规则如下:
OA方向越靠近垂直方向,则排序越靠前;
如果OA和OB在一条直线上,则比较|OA|和|OB|的大小,如果|OA|小,A距离O点更近,则A排序靠前。

依据O点创建的参考系对圆形上每个点进行重排序

(更理论的说法是依据极坐标系下的坐标值进行排序,具体如下:以O点为原点,创建极坐标系,对圆上每个点,依据直角坐标系中的坐标值推算出极坐标系下的坐标。如果A点在极坐标系下的角度值更大,或者角度值相等情况下半径值更小,则A点排序靠前。)

具体实现时,比较半径的方法就是计算两点的距离,至于比较角度,下面需要详细说明:

两个点之间的角度比较方法是做叉积,OA×OB=|OA|*|OB|*sin(OA到OB的夹角)。从公式容易看出,如果OA×OB叉积结果为负数,表示OA到OB的夹角超过了180度,对应到图中的情况只可能是A在极坐标系下的角度值大于了B的角度值。

排完序之后,需要计算相邻点的凸包性,方法也是使用上面的叉积,每判断一个点C时,和最近确定了的两个点A,B进行进行计算,如果CB×CA为非正数,则表示A,B,C为凹形,C点需要剔除掉。

这样遍历之后余下的就是符合凸形的样本点了,依据这些样本点继续做插值可以得到近似的圆形了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值