确定点是否位于 3D 网格内部的算法

2023-12-26

用于确定点是否位于 3D 网格内部的快速算法是什么?为简单起见,您可以假设网格都是三角形并且没有孔。

到目前为止我所知道的是,确定光线是否穿过网格的一种流行方法是计算光线/三角形相交的数量。它必须很快,因为我正在使用它进行触觉医学模拟。所以我无法测试所有三角形的射线相交。我需要某种哈希或树数据结构来存储三角形,以帮助确定哪个三角形是相关的。

另外,我知道如果我有任意顶点的二维投影,则需要一个简单的点/三角形相交测试。但是,我仍然需要知道哪些三角形是相关的,此外,哪些三角形位于点前面,并且只测试这些三角形。


我解决了我自己的问题。基本上,我采用任意 2D 投影(扔掉其中一个坐标),并将三角形的 AABB(轴对齐边界框)散列到 2D 数组。 (titus 提到的一组 3D 立方体是多余的,因为它只能给你一个常数因子加速。)使用 2D 数组和你正在测试的点的 2D 投影来获得一小组三角形,你可以这样做3D 射线/三角形相交测试(参见3D 中射线、线段、平面和三角形的交点 http://softsurfer.com/Archive/algorithm_0105/algorithm_0105.htm)并计算 z 坐标(抛出的坐标)大于该点的 z 坐标的射线交点的三角形数量。偶数个交点意味着它在网格之外。奇数个交叉点意味着它在网格内部。这种方法不仅速度快,而且非常容易实现(这正是我所寻找的)。

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

确定点是否位于 3D 网格内部的算法 的相关文章

  • 在 O(log n) 中查找排序矩阵(行 n 列)中的数字 [重复]

    这个问题在这里已经有答案了 假设我有一个矩阵 MxN 其行和列已排序 每行中的所有元素均按升序排列 每列中的所有元素均按升序排列 所有元素均为整数 无法做出其他假设 Example 1 5 8 20 2 9 19 21 12 15 25 3
  • 如何生成排列?

    我的问题是 给定一个长度为 n 的列表 L 和一个整数 i 使得 0 对于任意 i 和任意 2 个列表 A 和 B perm A i 和 perm B i 都必须将 A 和 B 的第 j 个元素映射到 A 和 B 相同位置的元素 对于任何输
  • 如何验证无锁算法?

    从理论上讲 至少应该可以对无锁算法进行暴力验证 只有这么多的函数调用组合 是否有任何工具或正式推理过程可以实际证明无锁算法是正确的 理想情况下它还应该能够检查竞争条件和 ABA 问题 注意 如果你知道一种方法来证明一点 例如 只证明它不受
  • 计算 Adamic-Adar 的快速算法

    我正在研究图形分析 我想计算一个 N N 相似度矩阵 其中包含每两个顶点之间的 Adamic Adar 相似度 为了概述 Adamic Adar 让我从以下介绍开始 给定邻接矩阵A无向图的G CN是两个顶点的所有公共邻居的集合x y 两个顶
  • Dijkstra 算法不生成最短路径?

    我正在使用 Dijkstra 算法解决最短路径问题 我遇到了麻烦 因为该算法应该提供最短路径 但运行该算法后 我手动得到了一条短路路径 这只是该算法的副产品吗 我尝试生成的路径是从 a gt z 这是我通过应用该算法得到的路径 在我访问的每
  • 将整数列表划分为总和相等的 K 个子列表

    类似的问题还有1 https stackoverflow com questions 27322804 partition of a set into k disjoint subsets with equal sum and 2 http
  • 寻找下一个素数的最佳方法(Java)

    我被要求编写一个程序以最佳方式找到下一个素数 我编写了这段代码 但找不到最佳答案 有什么建议么 public static int nextPrime int input input now find if the number is pr
  • 为什么《破解编码面试》这个例子的时间复杂度是O(k c^k)?

    该问题来自 破解编码面试 第 6 版 问题 V1 11 以下代码打印长度为 k 的所有字符串 其中字符 是按排序顺序排列的 它通过生成所有长度的字符串来做到这一点 k 然后检查每个是否已排序 什么是运行时间 package QVI 11 P
  • 查找文本中所有关键字的有效算法

    我有很多字符串 其中包含许多不同拼写的文本 我通过搜索关键字来标记这些字符串 如果找到关键字 我将使用该关键字的关联文本 假设搜索字符串可以包含文本 schw schwa 和 施瓦茨 我有三个关键字 全部解析为文本 schwarz 现在我正
  • 在 3d 网格中转发(绘制)线

    我需要类似 Bresenham 算法的东西 但是 对于 3d 网格空间来说不完全是这样 我需要 3d 单元网格 边缘尺寸 1 0 从 S 点开始 前进到 K 点 接触 该线接触的所有单元格 即使只有边缘 点被触摸我需要触摸所有 8 个单元
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • 如何在 R 中导入并绘制三角形网格?

    我想在 R 中绘制我的模型输出 它是格式为的三角形网格 x1 y1 z1 x2 y2 z2 x3 y3 z3 value 每行代表一个三角形 我想用以下方法绘制这些三角形value作为规模 mymesh lt structure c 0 9
  • 从原点开始在离散 2D 网格上迭代向外螺旋的算法

    例如 这是预期螺旋的形状 以及迭代的每个步骤 y 16 15 14 13 12 17 4 3 2 11 18 5 0 1 10 x 19 6 7 8 9 20 21 22 23 24 其中线条是 x 轴和 y 轴 以下是算法每次迭代 返回
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 如何计算 3D Morton 数(交织 3 个整数的位)

    我正在寻找一种快速计算 3D Morton 数的方法 这个网站 http www graphics stanford edu seander bithacks html InterleaveBMN有一个基于幻数的技巧来处理 2D Morto

随机推荐

  • GlobalScope、CoroutineScope、lifecycleScope

    我习惯于与AsyncTask由于它的简单性 并且很好地理解它 但Coroutines让我感到困惑 您能简单地向我解释一下以下各项的区别和用途吗 GlobalScope launch Dispatchers IO GlobalScope la
  • VBA多次插入图像,无需复制、粘贴

    这里有一个有点奇怪的问题 在我的一张 Excel 工作表上 我生成了一个 pdf 文档 该代码通过根据需要添加表段并根据需要手动设置分页符来运行 以便表不会分散在单个页面上 大多数表有 5 10 行 在每页的底部 还留有足够的行来插入图像
  • 访问 C 中的命令行参数

    如果这是一个菜鸟问题 请原谅我 但我是 C 的初学者 只学习了一段时间 我尝试编写一个对两个数字求和的程序 作为应用程序的参数提供 代码是这样的 include
  • C 结构点运算符到底做什么(低级视角)?

    我有一个关于 C 中结构的问题 因此 当您创建结构时 您实际上是在定义内存块的框架 因此 当您创建结构体的实例时 您正在创建一个内存块 以便它能够保存一定数量的元素 但是 我对点运算符的作用有些困惑 如果我有一个struct Car并有一个
  • 我的代码循环次数超出了我的预期,我怀疑我的 getchar 语句有问题

    首先 我要提前感谢在座的各位 我非常期待在计算机科学领域取得进步 并随着我变得更加熟练而帮助他人 现在这是我的代码 include
  • Rstudio运行和源码的区别

    我正在使用 Rstudio 不确定选项 运行 和 源 有何不同 我尝试用谷歌搜索这些术语 但 来源 是一个非常常见的词 无法获得良好的搜索结果 Run and source具有细微不同的含义 据 RStudio 报道文档 https sup
  • ExtJS 组合框过滤器

    我有两个组合框 第一个用于选择region 第二个用于选择province 应显示在省份组合框中的值将基于区域组合框中选择的值 区域组合框代码 xtype combobox label Region ID margin 10 20 flex
  • 如何解决“都使用 XML 类型名称 X,使用 XML 属性为类型指定唯一的 XML 名称和/或命名空间”?

    我有以下枚举定义 namespace ItemTable public enum DisplayMode Tiles Default namespace EffectiveItemPermissionTable public enum Di
  • 如何在 matplotlib 中制作空白子图?

    我正在 matplotlib 中制作一组子图 例如 3 x 2 但我的数据集少于 6 个 如何将剩余的子图留空 安排如下 0 0 0 1 1 0 1 1 2 0 2 1 这可能会持续几页 但在最后一页上 例如有 5 个数据集 2 1 框将为
  • IE 的 AWS 签名问题

    我目前正在将文件直接上传到 S3 用户应该能够将一个或多个文件拖到站点的定义部分 然后向我的服务器发出请求并为上传的文件生成签名 首先 我请求从服务器计算的有效签名 生成的签名如下所示 success action status
  • BackboneJs:在视图中 el: 和 tagName 之间有什么区别:

    我正在尝试理解这个概念 你能帮我简化一下这个问题吗 也许可以提供一个简单的例子来说明两者之间的区别el 属性和tagName 属性 在一些示例中 不同的视图使用el 有时和其他人使用tagName 我专门搞乱了我自己的实现example h
  • 当图像不存在时不显示下一个/图像组件

    我正在使用 next image 并且当图像的路径无效时 我希望图像根本不渲染 例如 该图像不存在 现在它显示小图标和替代名称 在这种情况下我不想显示任何东西 那可能吗 由于它是前端我无法使用fs检查 所以我不知道该怎么做
  • 在 Android 中使用 PhoneGap 选择图像/视频

    如何在 Android 中使用 PhoneGap 选择图像 视频 或拍摄照片 视频 我有一个网络表单需要选择图像 视频内容并提交表单来上传内容 PhoneGap有能力这样做吗 或者我必须回退到原生 Android 代码 是的 您可以使用ph
  • Xcode 未将最新资源文件复制到 iPhone

    我正在用 Xcode 用 Objective C 编写一个 iPhone 应用程序 并且有一些在设备上运行的 Lua 脚本 我遇到一个问题 如果我编辑 Lua 脚本 保存 切换到 Xcode 并构建并运行 Y 则该 Lua 脚本的最新版本会
  • OpenSSL 服务器密码选择

    在 SSL TLS 握手期间 客户端发送受支持的密码套件列表 服务器选择用于对话的密码套件 Windows 有一个密码套件的优先级列表 可通过注册表进行配置 并将选择该列表中客户端支持的第一个套件 使用密码套件标志创建可接受的密码列表后 O
  • 虚拟目录中的 IIS 配置文件

    我有多个网站 它们都具有相同的代码 但应用程序设置不同 我想将我的应用程序设置放在位于虚拟目录中的单独配置文件中 这将使我能够拥有跨所有站点共享的所有代码的单个副本 并且每个站点都有不同的虚拟目录 不幸的是 当我尝试配置它时 IIS 不会处
  • 用于高效日期解析的 FastDateFormat 的替代方案?

    非常了解性能和线程问题SimpleDateFormat 我决定去FastDateFormat 直到我意识到FastDateFormat仅用于格式化 不进行解析 有没有替代方案FastDateFormat 开箱即用 并且比SimpleDate
  • 获取拖动预览的帧

    我正在实施拖放UICollectionView使用 iOS 11 中引入的新 Apple API What I need is to get a frame of drag preview see below red rectangle 我
  • 我们何时应该在 Kotlin 上使用 run、let、apply、also 和 with 的示例

    我希望为每个函数 run let apply with 提供一个很好的示例 我读过了本文 https medium com tpolansk the difference between kotlins functions let appl
  • 确定点是否位于 3D 网格内部的算法

    用于确定点是否位于 3D 网格内部的快速算法是什么 为简单起见 您可以假设网格都是三角形并且没有孔 到目前为止我所知道的是 确定光线是否穿过网格的一种流行方法是计算光线 三角形相交的数量 它必须很快 因为我正在使用它进行触觉医学模拟 所以我