判断点是否在图形(矩形、椭圆、多边形)内的算法(二)

我们在上一篇文章中介绍了判断一个点是否在图形内的算法,那如果是大量的点呢?例如我们要在一个2000*2000的画布中,把所有在图形内的点填充为红色,在外面的填充为绿色。这样的话,我们就要对4百万个点进行区域判断,这个计算量是非常巨大的。

对于上一篇中介绍的方法,我们有一些优化的空间,例如:

(1)因为三角函数的计算是很耗时的,先把cos和sin值求出来。

(2)矩形的判断是比较快速的,可以先求出椭圆和多边形的外接矩形,如果在外接矩形外,肯定就不会在图形内了。

但是这样的优化之后,计算量仍然是巨大的。实际上,我们有更好的方法。

对于要判断大量点是否在图形内的场合(这个场合的点肯定是整型的),更有效的方法是:

(1)求出图形的边界像素点。

(2)使用填充的算法找出边界点内所有的像素点。

对于第一步,我们可以使用Bresenham算法,而第二步可以使用FloodFill算法。这些算法都可以搜索得到,在这里不再具体介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值