首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效地查找位于圆内的数组的索引

有效地查找位于圆内的数组的索引
EN

Stack Overflow用户
提问于 2016-12-14 18:07:31
回答 1查看 71关注 0票数 0

提前告诉你,我已经开始学习编程了。

问题如下:

我有一个长度为N的数组,我想找到半径为R的圆内的所有索引,以一个索引为中心,比方说第j个索引。

我有一个想法,但它可能效率很低。

我会将一些0,N-1中的第k个索引转换为笛卡尔坐标,使用:

代码语言:javascript
复制
        int x = k / side;               

        int y= k % side;

其中side为sqrt(N),并测试它是否满足圆的方程:

代码语言:javascript
复制
         (x_xC)*(x-xC)+ (y_yC)*(y-yC)<=R*R

其中(xC,yC)是第j个元素的坐标。如果是,我将存储与(x,y)相关联的索引,或者为下一个元素再次存储索引,直到我覆盖整个数组。

这是一个好主意,还是对于非常大的数组来说效率太低?

EN

回答 1

Stack Overflow用户

发布于 2016-12-14 18:20:41

有一种方法可以不遍历整个数组,而只遍历位于圆圈中的元素:

  1. Compute xCyyC-R循环到yC+R (在数组边界进行适当的裁剪,并且在R不是整数的情况下进行适当的舍入)。
    1. 对于每个这样的y,让r=sqrt(R*R-(y-yC)*(y-yC))x通过适当的舍入从xC-r循环到xC+r (并且再次在数组boundaries).
    2. Convert xy处进行适当的裁剪)回到数组索引。<代码>H221<代码>G222
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41139834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档