查找二维空间中圆内的所有点

2024-05-04

我表示我的 2D 空间(考虑一个窗口),其中每个像素显示为 2D 数组中的一个单元格。即 100x100 的窗口由相同维度的数组表示。

现在给定窗口中的一个点,如果我画一个半径的圆r,我想找到该圆圈中的所有点。

我想我应该检查半径周围方形区域中的每个点,side = 2*r,如果它位于圆圈内或不在圆圈内。也许我会使用正常距离公式?

因此,也许有以下几点:

for (x=center-radius ; x<center+radius ; x++){
    for (y=center-radius ; y<center+radius; y++) {
        if (inside) {
            // Do something
        }
    }
}

它能达到我的目的吗?我可以让它更快吗?


它能达到我的目的吗?

对于你的 100x100,是的。

我可以让它更快吗?

是的。例如,您可以:

  • 由于对称性,仅检查 1 个象限并获取其他点。
  • 计算距离时跳过平方根。

Code:

for (x = xCenter - radius ; x <= xCenter; x++)
{
    for (y = yCenter - radius ; y <= yCenter; y++)
    {
        // we don't have to take the square root, it's slow
        if ((x - xCenter)*(x - xCenter) + (y - yCenter)*(y - yCenter) <= r*r) 
        {
            xSym = xCenter - (x - xCenter);
            ySym = yCenter - (y - yCenter);
            // (x, y), (x, ySym), (xSym , y), (xSym, ySym) are in the circle
        }
    }
}

这大约是 4 倍的速度提升。

JS tests http://jsperf.com/point-in-circle/2了解此处介绍的解决方案。对称是我的计算机上最快的。三角学由黑暗阿卜索尔尼特呈现 https://stackoverflow.com/questions/15856411/finding-all-the-points-within-a-circle-in-2d-space#answer-15856534非常聪明,但它涉及昂贵的数学函数,例如sin and acos,这会对性能产生负面影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找二维空间中圆内的所有点 的相关文章

  • 性能:cakephp-mysql 中的 UUID 与自动递增

    我正在搜索 cakePHP 生成的 UUID 32 个字符长 是否比自动增量在性能上更快 插入和选择操作的比较 我应该使用 cakePHP 生成的 UUID 还是使用 MySQL 的简单自动增量生成的 UUID 这是我发现的一个案例研究 但
  • 具有独特矩阵转置问题的 2D 分块

    我有类型的复杂值数据struct complex double real 0 0 double imag 0 0 以 3 阶张量的形式组织 底层容器具有与内存页边界对齐的连续内存布局 The natural slicing directio
  • 像matlab一样在python中连接数组而不知道输出数组的大小

    我正在尝试在 python 中连接数组 类似于 matlab array1 zeros 3 500 array2 ones 3 700 array array1 array2 我在 python 中做了以下操作 array1 np zero
  • PHP 中的数组按值排序并维护索引关联

    我有一个数组 array array john gt 2 adam gt 3 ben gt 10 tim gt 1 我已经尝试了 PHP 的各种函数来实现这个数组结构 array array tim gt 1 john gt 2 adam
  • Three20中的TTSpeechBubbleShape仅绘制“语音”三角形顶部和底部

    因此 我将 Three20 库用于 iPhone 应用程序 并希望将 TTSpeechBubbleShape 样式用于视图 但三角形似乎不想画在左边或右边 我在源代码中看到它有很多几何图形 并且想知道是否有人解决了这个问题或知道如何解决它
  • 压缩很多小字符串的算法?

    我正在寻找一种压缩小 ASCII 字符串的算法 它们包含大量字母 但也可以包含数字和很少的特殊字符 它们很小 平均约为 50 100 字节 最多 250 个字节 例子 Android show EditText setError above
  • Android:了解 OnDrawFrame、FPS 和 VSync (OpenGL ES 2.0)

    一段时间以来 我在 Android 游戏中遇到了运动精灵间歇性 卡顿 的情况 这是一个非常简单的 2D OpenGL ES 2 0 游戏 这是一个持续存在的问题 我已经多次重新访问过 在我的游戏循环中 我有 2 个 计时器 一个用于记录前一
  • 多维数组将每个列表数组存储在另一个数组中

    我嵌套了可能有 2 或 3 层深度的多维数组 在它里面我可能有也可能没有列表数组 我需要循环数组 Array 0 gt Array id gt 1 name gt cat name 1 list gt Array 1 gt swgdgbdg
  • 通过排列四个给定数字找到最大可能时间 HH:MM

    我最近为了工作晋升而参加了编码测试 这是我真正遇到的任务之一 我想知道什么是最好的方法来做到这一点 我使用了大量的 if 和 if else 这不是最干净的解决方案 但完成了工作 我被问到的问题是 将 4 个数字格式化为 24 小时时间 0
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode
  • 在多维数组 PHP 的所有键中搜索

    我想在多维数组中的所有键中搜索特定字符串 我只需要弄清楚它是否存在 仅此而已 我想知道访问者的 IP 是否存在于任何数组中 有没有我可以用来执行此操作的 php 函数或方法 我尝试过的每个函数或方法总是返回 false 数组中 数组搜索 数
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • Java数组,NullPointerException?

    我宣布了两张牌 Card card1 new Card 3 Card Suit clubs Card card2 new Card T Card Suit diamonds 这有效 Hand hand1 new Hand hand1 tak
  • 融合元组以查找等价类

    假设我们有一个包含 k 个元素的有限域 D d1 dk 我们认为 S 是 D n 的子集 即一组 形式的元组 其中 ai 在 D 中 我们希望使用 S 2 D n 的子集 即一组 形式的元组 其中 Ai 是 D 的子集 来 紧凑地 表示它
  • 在生产代码/服务器上运行测试

    我在单元测试 自动化测试方面相对缺乏经验 所以如果这个问题没有任何意义 请原谅 我当前正在处理的代码库耦合如此紧密 以至于我需要重构大部分代码才能对其运行单元测试 所以我阅读了一些帖子并发现了 Selenium 我认为它确实是一个很酷的程序
  • 基于 2 个输入的伪随机数生成器 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要根据 2 个输入值 X 和 Y 生成一个伪随机数 给定相同的 X 和 Y 值 我需要得到相同的结果 结果应介于 0 和 1 之间 含
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 2 使用我的代码在数组中查询

    我使用滑块来显示我的 WordPress 精选文章 它选择一个自定义类别并返回一定数量的帖子 如何将显示的第一篇帖子设为自定义帖子 我可以直接在滑块代码中添加特定帖子的 ID吗使该帖子首先出现 然后是原始查询返回的其他内容 例如 在页面上
  • PHP 中根据相似值对数组进行分组

    我有一个具有以下结构的数组

随机推荐

  • 在 AIX 中启动 C++ 可执行文件时出错

    在我们的应用程序从 HP 迁移到 AIX 的过程中 我遇到了一个独特的问题 以下模拟代码在 HP 和 AIX 中产生不同的结果 是的 即使您不打算调用代码 不使用 库函数仍然可能是一个错误 它可以将某些组件的加载推迟到稍后 因此它可能不会导
  • 序列化文件类型 jQuery

    我正在尝试使用序列化我的表单数据 包括文件图像字段jquery form jsjQuery API 该 API 正在帮助我序列化数据字段 包括图像并返回图像对象 object file 这是我的序列化代码 var data js form
  • 使用 R 从 Microsoft Outlook 发送电子邮件时的 Html 表输出格式

    我正在尝试使用以下方法将数据框转换为 html 表htmlTable打包 然后使用 Microsoft Outlook 作为电子邮件客户端发送电子邮件RDCOMClient通过附加 html 表作为电子邮件正文来进行打包 我是 HTML 编
  • 为什么android SQLite可以将双精度值(java 8字节)存储到float列中

    Create Table db execSQL CREATE TABLE PERSONS TABLE PersonsColumns ID INTEGER PRIMARY KEY AUTOINCREMENT PersonsColumns HE
  • 由于辅助功能设置而未检测到 iOS 手势

    我正在开发的应用程序需要三点滑动手势 我已经成功地实现了这个使用UIGestureRecognizer大多数情况下它工作得很好 但是 如果您打开设备的 缩放 辅助功能设置 设置 gt 常规 gt 辅助功能 gt 缩放 则会停止识别该手势 缩
  • 具有重复名称的 WSDL — 如何强制 Java 类名称

    背景 我们正在开发一个与多个第三方网络服务通信的应用程序 遗憾的是 其中一个使用糟糕的命名约定定义了 WSDL 文件 响应元素及其使用的复杂类型经常重复使用相同的名称 下面的代码片段显示了这样一个例子
  • 在注释处理器中获取字段类

    我正在编写我的第一个注释处理器 并且遇到了一些看似微不足道的问题 但我找不到有关它的任何信息 我有一个用我的注释注释的元素 MyAnnotation String property 当我将此属性作为处理器中的元素获取时 我似乎无法以任何方式
  • 使用 React 更新关于 props 变化的 C3 图表

    我试图在数据更改时美化作为 React 组件编写的 C3 图表的更新 数据通过父组件的 props 流向组件 我现在拥有的解决方案 有效 但似乎并不是最优的 当新数据进入时 整个图表都会重新生成 我想过渡到新状态 线条移动而不是整个图表眨眼
  • 如何在 UIStackView 中垂直和水平居中

    I have a simple UIImageView with 50x50 size If I had a UIView of size 100x100 and I wanted to center the image inside of
  • 如何以编程方式滚动面板

    我有一个System Windows Forms Panel有一些内容 我正在尝试以编程方式向上或向下滚动面板 垂直 我尝试过设置AutoScrollPosition属性为新的Point在面板上 但这似乎并没有做到这一点 我有AutoScr
  • UIView的setNeedsLayout、layoutIfNeeded和layoutSubviews之间有什么关系?

    谁能对两者之间的关系给出明确的解释UIView s setNeedsLayout layoutIfNeeded and layoutSubviews方法 以及一个使用所有三个的示例实现 谢谢 让我感到困惑的是 如果我将自定义视图发送给set
  • 带填充零的十六进制格式

    将整数类型格式化为十六进制字符串时 我无法让它用零填充数字 println 4x 0x0001 as u16 gt 0x1 but expected 0x0001 println 02x 0x0001 as u16 gt 0x1 same
  • Angular js中两个$scope数组的区别

    有没有办法返回 angularjs 范围内存在的两个数组之间的差异 例如 scope user1 a b scope user2 a b c d 这两者的区别应该给我另一个 scope user3 c d Underscore js对此有不
  • 使用主题函数在 body 标记后插入代码

    我试图在开头添加一段代码everyDrupal 站点中的页面 因为我有不止一个page模板 我想以编程方式执行此操作 但没有成功 我还是个新手 虽然我了解了钩子 主题函数等的要点 但我只是想不出实现这一目标的正确方法 到目前为止我已经覆盖了
  • R data.frame 从另一个变量选择的变量中获取值,向量化

    我收到的数据包含许多类似的变量 还有一个附加变量指示哪些变量one我真正想要的那些类似的变量 使用循环我可以查找正确的值 但是数据很大 循环很慢 而且看起来这应该是可矢量化的 我只是还没弄清楚怎么做 编辑 所选变量将用作同一数据框中的新变量
  • SwiftUI - 正确使用 @available() 和 #available

    我在下面的代码中遗漏了什么吗 此应用程序在 iOS 15 设备上构建 macOS Monterey b5 Xcode 13 b5 并完美执行 但在 iOS 14 7 设备上导致 SIGABRT import SwiftUI struct C
  • 在 RecyclerView 中回收视图后,长按会损坏 EditText(或 android.support.v7.widget.AppCompatEditText)

    Bug总结 After EditText正在被回收RecyclerView 其用于选择所有文本并显示上下文菜单 剪切 复制 粘贴 的长按行为不再按预期工作 从 Android 15 到 Android 28 都会出现此问题 我都尝试过Edi
  • 角度抛出错误 $parse:ueoe 表达式意外结束

    我网站的这一部分有错误 我无法弄清楚 因为我几个月没有更改它 错误是 Error parse ueoe http errors angularjs org 1 4 3 parse ueoe p0 event id 3FEventContro
  • 如何使用 JGit API 从父提交获取树?

    对于给定的提交 我想获取父提交树 以便我可以继续比较更改 我发现父 RevCommit 对象上的 getTree 始终返回 null ObjectId lastCommitId repository resolve Constants HE
  • 查找二维空间中圆内的所有点

    我表示我的 2D 空间 考虑一个窗口 其中每个像素显示为 2D 数组中的一个单元格 即 100x100 的窗口由相同维度的数组表示 现在给定窗口中的一个点 如果我画一个半径的圆r 我想找到该圆圈中的所有点 我想我应该检查半径周围方形区域中的