求和面积表 (SAT) 的 3D 变体

2024-03-12

根据维基百科:

A 面积求和表 http://en.wikipedia.org/wiki/Summed_area_table是一种数据结构和算法,用于快速有效地生成网格矩形子集中的值之和。

对于二维空间,可以通过迭代生成求和面积表x,y超过所需的范围,

I(x,y) = i(x,y) + I(x-1,y) + I(x,y-1) - I(x-1,y-1)

And the query矩形角的函数A(top-left), B(top-right), C(bottom-right), D可以通过以下方式给出:-

I(C) + I(A) - I(B) - I(D)

我想将上面的内容转换为 3D。另请告知是否有任何其他方法/数据结构可用于计算 3D 空间中的部分和。


我不确定,但可以想到类似以下的内容。 (我还没有浏览维基百科代码)

对于每个坐标 (x,y,z),求从 (0,0,0) 到该元素的所有元素的总和。
将其称为 S(0,0,0 到 x,y,z) 或 S0(x,y,z)。
这可以通过遍历 3D 矩阵一次来轻松构建。

S0( x,y,z ) =  value[x,y,z] + S0(x-1,y-1,z-1) + 
               S0( x,y,z-1 ) + S0( x, y-1, z ) + S0( x-1, y, z ) 
               - S0( x-1, y-1, z ) - S0( x, y-1, z-1 ) - S0( x-1, y, z-1 )

(基本上元素值 + S0(x-1,y-1,z-1) + 3 个面 (xy,yz,zx) )

现在,对于每个查询 (x1,y1,z1) 到 (x2,y2,z2),首先转换坐标,使 x1,y1,z1 是最接近原点的长方体的角,x2,y2,z2 是最接近原点的角距离原点最远。

S( (x1,y1,z1) to (x2,y2,z2) ) = S0( x2,y2,z2 ) - S0( x2, y2, z1 ) 
                                - S0( x2, y1, z2 ) - S0( x1, y2, z2 )
                                + S0( x1, y1, z2 ) + S0( x1, y2, z1 ) + S0( x2, y1, z1 )
                                - S0( x1, y1, z1 )

(有待更正)

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

求和面积表 (SAT) 的 3D 变体 的相关文章

  • 编程 Pearls - 随机选择算法

    Programming Pearls 第一版第 120 页介绍了从 N 个整数总体中选择 M 个等概率随机元素的算法 InitToEmpty Size 0 While Size lt M do T RandInt 1 N if not Me
  • 如何从一组重叠的圆计算多边形集?

    这个问题是一些计算细节的扩展这个问题 https stackoverflow com questions 1667310 combined area of overlapping circles 假设有一组 可能重叠的 圆 并且希望计算这组
  • 寻找距离原点最近的 100 颗恒星的算法

    首先让我提出正确的问题 问 有一个文件包含超过一百万个点 x y 每个点代表一颗星星 a b 处有一颗行星地球 现在 任务是构建一种算法 返回距离地球最近的 100 颗恒星 您的算法的时间和空间复杂度是多少 这个问题在各种采访中被问过很多次
  • 固定大小集以包含给定集的最大数量

    我有大约 1000 组尺寸 1 4 1 3 3 5 6 4 5 6 7 5 25 42 67 100 是否有可能找到包含最大数量的给定集合的大小为 20 的集合 检查每一个100 80 20 集 效率低下 我不太确定这是 NP 完全的 考虑
  • 在 Python 中进行模糊键查找的最佳方法?

    我遇到一个问题 我需要在哈希映射中进行模糊查找 即返回与最接近查询的键相对应的值 在我的例子中是通过 Levenshtein 距离测量的 我目前的方法是子类化dict使用特殊的查找方法计算所有键的编辑距离 然后返回得分最低的键的值 基本上是
  • 点集子集的最小周长凸包

    给定平面上的 n 个点 没有 3 个共线 给定数字 k 找到 k 个点的子集 使得 k 个点的凸包在 k 个点的子集的任何凸包中具有最小周长 我可以想到一个简单的方法 运行时间为 O n k k log k 找到大小为 k 的每个子集的凸包
  • 如何求小于给定数的最大2次方

    我需要找到小于给定数字的最大 2 次幂 我陷入困境 找不到任何解决方案 Code public class MathPow public int largestPowerOf2 int n int res 2 while res lt n
  • 时间复杂度和运行时间有什么区别?

    时间复杂度和运行时间有什么区别 它们是一样的吗 运行时间是指程序运行所需的时间 时间复杂度是对输入大小趋于无穷大时运行时间渐进行为的描述 您可以说运行时间 是 O n 2 或其他什么 因为这是描述复杂性类和大 O 表示法的惯用方式 事实上
  • 数组中连续元素的最大乘积

    我在现场面试的时候被问到了这个算法问题 由于没有要求我签署保密协议 我将其发布在这里寻求答案 给定一个数组REAL不包含 0 的数字 找到产生最大乘积的连续元素 该算法应在线性时间内运行 我考虑过以下方法 使用两个数组 第一个是利用DP思想
  • 分而治之策略来确定列表中是否有超过 1/3 的相同元素

    我正在使用分治算法来确定列表中是否有超过 1 3 的元素相同 例如 1 2 3 4 不 所有元素都是唯一的 1 1 2 4 5 是的 其中 2 个是相同的 没有排序 是否有分而治之的策略 我陷入了如何划分的困境 def is valid i
  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 数学组合的完美最小哈希

    首先定义两个整数N and K where N gt K 两者都在编译时已知 例如 N 8 and K 3 接下来 定义一组整数 0 N or 1 N 如果这使答案更简单 并调用它S 例如 0 1 2 3 4 5 6 7 的子集数量S wi
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 迭代任意大小的子集

    我可以迭代大小为 1 的子集 for int a 0 a lt size a 或大小为 2 的子集 for int a1 0 a1 lt size a1 for int a2 a1 1 a2 lt size a2 or 3 for int
  • 需要一种将网络块范围折叠为超集范围列表的算法

    我的数学不及格 我需要一种有效的方法将网络范围缩小为超集 例如如果我输入 IP 范围列表 1 1 1 1至2 2 2 5 1 1 1 2至2 2 2 4 10 5 5 5至155 5 5 5 10 5 5 6至10 5 5 7 我想返回以下
  • 具有 2 个属性的背包算法。如何在 3d 数组中实现它?

    当有超过 1 个属性时 我无法理解背包问题 当有 1 个属性时 我必须编写一个使用具有 2 个属性的背包算法的程序 老师告诉我们 它必须在 3d 数组中完成 错误的实现将导致 O 2 n 处理时间 我无法想象这样的数组会是什么样子 假设这是
  • CSS3DObject 始终位于 WebGL Mesh 前面

    我正在混合CSS3D Renderer with WebGL Renderer to add HTML3D 空间中的元素WebGL场景 这CSS3DObject在前面WebGL网格即使WebGL Renderer具有较高的 z index
  • Florian 的 Grisu2 算法如何工作?

    我遇到了一个关于将 double 转换为 ascii 的问题 经过搜索 我得到了 Florian 的论文 使用整数快速准确地打印浮点数 http www cs tufts edu nr cs257 archive florian loits
  • 在 O(n) 时间内排序?

    我被这个问题困扰了 2周 知道如何处理它吗 令 L 为 n 个不同整数的列表 假设 L 的 x 的元素在 1 750 范围内 设计线性排序算法对 L 的元素进行排序 我已经尝试过插入排序 但我不确定我的方法是否正确 Construct an
  • 使用文件 API 将资源加载到 Three.js 中

    我想创建导入 3D 模型以在浏览器中查看的功能 方法是使用File API http www html5rocks com en tutorials file dndfiles Three js 加载器在我托管的文件上运行良好 我的理解是加

随机推荐

  • Mysql 读锁 SELECT FOR UPDATE

    EDIT I use Node js felixge mysql https github com felixge node mysql pooling connections并有一个poolmysql 连接数 ORIGINAL 我有一个
  • APK 安装失败:[INSTALL_FAILED_VERIFICATION_FAILURE]

    我正在尝试在运行 Jelly Bean 4 2 AOSP 版本的设备上安装 APK 当我 adb install my apk 时 出现错误 安装 失败 验证 失败 我尝试使用 testsign jar 来 签名 apk 但它不会改变结果
  • RegExpValidator 无法正确验证 URL 模式

    The URL http www ftd de rss2 http www ftd de rss2当我在这个 不冒险的 中对照下面的正则表达式检查它时 它是无效的
  • aapt.exe'' 以非零退出值 1 完成

    我有问题 当我运行我的应用程序时写 Error Execution failed for task app processDebugResources gt com android ide common process ProcessExc
  • 如何从命令行启动SVN项目?

    因此 我在本地计算机上创建了一个 Ruby on Rails 应用程序 我有一个我创建的远程存储库 现在我如何第一次签入 我以前从未创建过自己的svn项目 所以我不知道该怎么做 我只对我从事过的项目做出了承诺 解决方案 cd my proj
  • jQuery mouseoverIntent 不起作用,但悬停可以

    我有以下代码 document ready function yearInner hide year this hover function yearInner this slideToggle 它隐藏了带有 YearInner 类的 di
  • 如何删除选取框中的尾随空格?

    我开发了一个不断向上移动的大帐篷 但确切的问题是 在滚动完最后一个图像后 第一个图像和最后一个图像之间存在巨大的差距 我只想删除附加到最后一张图像底部的尾随空格 有没有人帮我找出解决方案 提前致谢 HTML div style margin
  • @font-face 在 Firefox 中不起作用?

    这是由 FontSquirrel 生成的代码 在所有其他浏览器 包括 IE 中都可以正常工作 但在强大的 Firefox 中却不行 我究竟做错了什么 ps 我使用的是FF3 5 如果您无法查看我的示例 请参阅以下来源
  • Android手机休眠时网络访问

    我正在使用警报组合 设置为AlarmManager 和后台服务定期同步我的应用程序中的数据 我遇到的唯一问题是 当睡眠策略终止 Wi Fi 连接时 同步将不再起作用 有没有办法 唤醒 已进入睡眠状态的 Wi Fi 连接 GMail 以某种方
  • XA/JTA 事务还在使用吗?

    我有一个与多个数据库和一些自定义服务交互的应用程序 对于某些操作 我需要类似事务的行为 其中一组更改要么跨所有数据库 服务提交 要么在发生错误时全部回滚 X Open 组的 XA 标准和 Java JTA 似乎使用两阶段提交过程正好解决了这
  • 如何在 Haskell 中连接变量参数?

    Shell monad 支持可变参数 https hackage haskell org package shell monad 0 6 9 docs Control Monad Shell html t CmdParams 但是我找不到一
  • 如何从供应商目录生成 laravelcomposer.json? [复制]

    这个问题在这里已经有答案了 在我的 Laravel 项目中composer json and composer lock文件被删除了 不知道如何重建composer json从现有的文件vendor目录 Note 使用此方法的缺点是主com
  • SwiftUI:如何获取动态列表或 LazyVStack 中的视图框架

    我想在 LazyVStack 中获取视图的框架 嵌入 ScrollView 中的 LazyVStack 显示聊天消息 文本和图像 因为内容是动态调整大小的 所以我无法使用 GeometryReader 代理 将 GeometryReader
  • 如何在抽象类中声明重载运算符并在派生的非抽象类中重写它?

    我正在尝试编写一个带有一些纯虚拟二元运算符的抽象类 这些运算符应该由派生类实现以实现运算符多态性 这是一个简化的示例 class Base public virtual const Base operator const Base cons
  • Jquery:对一个 .click 事件使用两个选择器?

    如果我有这样的事情 jq elements children input click function 如何向其中添加另一个选择器 以便单击任一选择器时都会触发相同的事件 基本上需要这样的东西 jq elements jq another
  • 如何确定特定 Sql Server 2000 数据库中任何记录的最后更改时间?

    我有一个很少更新的 SQL Server 2000 数据库实例 我还有一个数据库表 其中没有保存每行的创建日期或修改日期的列 有什么方法可以确定上次对整个数据库执行更新或插入的时间 以便我至少可以限制表中的特定记录何时可能发生更改 注意 我
  • “盒子模型”CSS 有多少种类型?

    盒子模型 CSS 有多少种类型 CSS3 有两种盒子模型 content box and border box content box是默认值 content box content box是自 CSS 版本 1 以来默认的 CSS 盒子模
  • 当 onclientclick 为 false 时阻止 onclick 触发?

    是否可以使用onclientclick用于进行客户端检查的按钮的属性 如果支票退回true 然后开火onclick甚至 如果客户端检查返回false 不要开火onclick event 那可能吗 UPDATE 这两个工作 Stops the
  • BigQuery 物化视图 - 组中最后一个

    在 BigQuery 中 是否可以创建一个物化视图 其中包含基表中每个组的最新行 e g CREATE TABLE basetable group id INT64 timestamp TIMESTAMP value FLOAT64 INS
  • 求和面积表 (SAT) 的 3D 变体

    根据维基百科 A 面积求和表 http en wikipedia org wiki Summed area table是一种数据结构和算法 用于快速有效地生成网格矩形子集中的值之和 对于二维空间 可以通过迭代生成求和面积表x y超过所需的范