使用OpenCascade,如何快速进行2个形状的碰撞检测?

2023-12-22

使用OpenCascade,如何进行2个形状的碰撞检测?可能有几种方法。一是计算它们的交集,并检查交集结果。另一种方法是计算它们的最小距离。哪种方式更快?或者还有什么更快的方法?多谢。


在 brep 数据结构上计算最小距离是一项相当昂贵的操作。 OCC 确实提供了用于碰撞检测的商业选项 [1]。您的其他选择可能是使用 ODE 或 Bullit 在代表 BRep 的网格上执行碰撞检测。这就是我们在 PythonOCC 项目中采用的方法,请参阅 [2]

[1] http://www.opencascade.org/support/products/coldet/ http://www.opencascade.org/support/products/coldet/

[2] http://www.pythonocc.org/resources/dyn/cad-and-rigid-body-simulation/ http://www.pythonocc.org/resources/dyn/cad-and-rigid-body-simulation/

编辑:最近,我为我正在开发的离线机器人软件集成了优秀的 FCL 库 [3]。它的伟大之处在于它可以很好地处理退化网格,并且您可以非常快速地计算执行网格到网格的距离(使用 ODE 是不可能的)。 python ( cython ) 绑定是一项正在进行的工作 [4] 但很稳定,并且 python 开销几乎不明显,我可以推荐这种方法。

[3] https://github.com/flexible-collision-library/fcl https://github.com/flexible-collision-library/fcl

[4] https://github.com/neka-nat/python-fcl https://github.com/neka-nat/python-fcl

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

使用OpenCascade,如何快速进行2个形状的碰撞检测? 的相关文章

  • 花栗鼠碰撞检测

    我对花栗鼠完全陌生 而且我刚刚使用它几天 所以我猜这是非常明显的事情 但是我找不到任何相关文档 Chipmunk 中是否有任何回调或方法可以告诉您 2 个给定的形状发生了碰撞 如果不是 最好的方法是简单地在精灵上使用 cgrect cont
  • 圆线段碰撞检测算法?

    我有一条从 A 到 B 的线和一个位于 C 处 半径为 R 的圆 有什么好的算法可以用来检查直线是否与圆相交 它发生在沿着圆边缘的什么坐标处 Taking E是射线的起点 L是射线的终点 C是您要测试的球体中心 r是该球体的半径 Compu
  • 像素完美的 Android 碰撞检测

    好的 我正在 Android 上开发一款游戏 我需要实现像素完美的碰撞检测 我已经在每个图像周围设置了边界框 每个边界框都经过变换以匹配图像的当前旋转 这一切都很好 我还将每个位图的像素数据存储在数组中 有人可以帮我找出检测像素是否重叠的最
  • 继承SFML中的Transformable和Drawable

    我试图继承 SFML 中的 Transformable 和 Drawable 以使我的对象 嗯 可变形和可绘制 我正在制作一个简单的突破游戏 但也许我的做法是错误的 这是我的代码 include
  • 寻找凹/凸多边形内的有界矩形

    我正在寻找一种在凹多边形或凸多边形内查找轴对齐矩形的方法 我一直在网上查找 我能找到的最接近的解决方案只适合凸多边形 而不适合凹多边形 例如 在多边形内查找轴对齐的矩形 https stackoverflow com questions 6
  • 打砖块游戏中球和砖块之间的碰撞检测[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在打砖块游戏中如何检测球和砖块之间的碰撞 边界框碰撞 http www gamedev net reference articles
  • 删除 Meshlab 或 vcglib 中的自相交

    如何使用 Meshlab 应用程序或 vcglib 消除网格的自相交 这超出了范围 但 CGAL 中有一些函数 这仍然是实验性的 没有记录 但您可以使用该功能remove self intersections https github co
  • 求近似规则的点网格子集的周长

    让我们考虑一组接近规则的二维网格 这些网格与相邻网格相邻 相邻网格具有一个或多个相同的顶点 这里是10个网格的样本 顶点坐标 经度 纬度 如下 A lt lon lat 1 2 1 85 30754 27 91250 2 85 32862
  • 查找垂直点与直线相交的 x 和 y 坐标[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是对此的后续问题question https stackoverflow com questions 32606940 how to f
  • 高维中的凸包,找到多面体的顶点

    假设我有一个 6 维空间中的点云 我可以根据需要使其密集 这些点位于低维多面体的表面上 即点向量 x1 x2 x6 看起来是共面的 我想找到这个未知多面体的顶点 我当前的尝试通过 Python 中的 scipy 接口使用 qhull 算法
  • 从用于计算三角形和外接圆的 Swingworker 中重新绘制小程序

    我正在尝试复制找到的小程序here http www diku dk hjemmesider studerende duff Fortune 作为练习的一部分 该小程序使用 财富 的算法来生成两者 Voronoi 图和 Delaunay 三
  • 两个三角形或一组半平面的交集面积或凸点集的面积

    我需要计算 2D 平面中两个三角形之间重叠区域的面积 奇怪的是我已经写了code http github com victorliu Templated Numerics blob master AnalyticGeometry TInte
  • 如何检索两个 3D 向量之间的角度?

    我是Python新手 我在 3d 空间中有两个向量 我想知道两个向量之间的角度 I tried vec1 x1 y1 z1 vec2 x2 y2 z2 angle np arccos np dot vec1 vec2 np linalg n
  • 3D 中三角形到三角形碰撞检测

    我了解两个三角形之间的三角形到三角形的碰撞检测 有人可以解释一下我如何将它与由 1000 个顶点组成的 3D 对象一起使用吗 如何为每个网格创建三角形列表 我必须接受顶点的每个排列吗 这将导致 O n 3 我觉得这非常糟糕 我该如何概括这一
  • 计算 3D 平面多边形的质心

    这是一个与此类似的问题one here https stackoverflow com questions 2350604 get the area of a 3d surface 给定定义表面的 3D 坐标列表 Point3D1 Poin
  • 如何测试点是否位于其表面由点云定义的 3D 形状内?

    我有一个点的集合 这些点描述了一个大致呈球形的形状的表面 并且我需要一种方法来确定是否有任何其他给定点位于该形状内 我之前一直将形状 近似为精确的球体 但事实证明这太不准确 我需要一种更准确的方法 简单性和速度比完全精确性更有利 一个好的近
  • 用于移动物体的空间数据结构?

    我想知道处理大量移动对象 球体 三角形 盒子 点等 的最佳数据结构是什么 我试图回答两个问题 最近邻和碰撞检测 我确实意识到 传统上 像 R 树这样的数据结构用于最近邻查询 Oct Kd BSP 用于处理静态对象或很少移动对象的碰撞检测问题
  • WPF 路径冲突检测?

    I have two hexagon shapes
  • 如何用CGAL获取多边形网格的顶点和面?

    With CGAL 我能够得到一个多面体网格OFF格式 例如 下面的程序构建两个四面体 计算它们的交集 并将结果返回到OFF文件 这OFF输出提供顶点坐标和顶点索引给出的面 但我想将顶点和面作为 C 变量 例如double顶点向量和int面
  • 厚壁二维迷宫中的碰撞检测

    我必须使用 Windows Forms 为学校制作一个游戏 我的游戏包括用户必须穿过迷宫 我试图阻止我的用户使用碰撞检测直接穿过墙壁 但由于用于表示墙壁的矩形形状不同而陷入困境 这是游戏的图像 https i stack imgur com

随机推荐

  • MariaDB 不允许远程连接

    如屏幕截图所示 我已将帐户设置为允许远程连接 但如第二个屏幕截图所示 我仍然无法远程连接 我用于在虚拟机 Ubuntu 16 04 中进行测试 对我来说 我修复了更改文件的错误50 server cnf 我的服务器是Ubuntu 所以更改以
  • AWS Java SDK正在使用旧版本的jackson jar

    目前我正在努力在现有应用程序中添加AWS Java SDK以执行与AWS云相关的操作 在导入最新版本的 aws java sdk 即 1 11 113 时 我遇到运行时异常 在研究了异常之后 原因是 java sdk 使用了不推荐使用的版本
  • 不使用 where 子句进行更新

    id no 1 1 11 1 21 1 我想更新第二行号 至 2 我可以使用的查询是 update test set no 2 where id 11 如果没有 where 子句 我怎样才能实现相同的目标 我不知道why你会想要但是 UPD
  • Rest Standard:路径参数或请求参数

    我正在创建一个新的 REST 服务 向 REST 服务传递参数的标准是什么 在 Java 的不同 REST 实现中 您可以将参数配置为路径的一部分或请求参数 例如 路径参数http www rest services com item b
  • Emacs 中有函数调用层次结构的功能吗

    我正在维护别人的代码 该代码是在Linux平台上使用GCC 4 4 3用C语言编写的 然而 代码跳转很多 很难找出所有函数是从哪里调用的 在 Visual Studio 中 有一个称为 调用层次结构 的功能 它将显示函数的调用位置和调用位置
  • Angularjs + Ionic Framework:如何创建显示 ion-tabs 导航但不为其本身定义选项卡的新路线?

    标题很长 但这里有一个更好的解释 我有一个名为 Login 的模板 html 文件 我在 app js 中定义了一条路由 如下所示 state login url login templateUrl templates login html
  • Scala中如何保证类型参数不同?

    通过以下定义 可以确保具体类型参数相等 trait WithEqual T1 gt T2 lt T2 T2 所以这条线 type A WithEqual Int Int 将是合法的 现在我的问题是 如何达到完全相反的目的 因此 以下行应该n
  • 这些日志的 grok 模式应该是什么? (摄取 filebeat 的管道)

    我是 elasticsearch 社区的新人 我希望您能帮助我解决一些我遇到的困难 我的目标是使用 Filebeat 将大量日志文件发送到 Elasticsearch 为了做到这一点 我需要使用带有 Grok 模式处理器的摄取节点来解析数据
  • 如何读取图表区域内的文本框python pptx?

    我正在尝试使用自动化 pptpptx python图书馆 我正在使用模板 一些幻灯片中几乎没有图表 图表中有文本框 我尝试循环形状以获得shape id这些文本框 但我找不到shape id 当我尝试将文本框拖出图表区域时 它没有出现 文本
  • 在 Laravel 5.7 中的子域组内设置命名路由

    我一直在开发一个多租户应用程序 我正在尝试根据文档在子域中设置路由 https laravel com docs 5 7 routing route group sub domain routing https laravel com do
  • SpecRun 使用 @ignore 测试返回退出代码 120

    作为持续集成设置的一部分 从命令行运行 SpecRun 最近忽略了 ignore 测试在 SpecRun 完成时生成退出代码 120 目前 我们在任何不等于 0 的退出代码 通用成功指示器 上中断构建 退出代码 120 到底是什么意思 仅仅
  • 从 django 模型创建 javascript 对象(类)

    我正在开发一个单页应用程序 它将从大约十几个不同的 django 模型加载数据 允许用户操作数据 然后将所有更改保存回数据库 我可以通过序列化查询集的结果来将 django 模型 传递 到模板 例如 我有一个模型 Person class
  • 读取 ruby​​ 中的所有 shell 变量

    Problem 我正在将 shell 脚本作为 ruby 脚本中的子进程运行 运行脚本后我希望有一个选项来检查 shell 的所有环境变量 包括数组变量 到目前为止我已经想出了 set awk F BEGIN v 0 a zA Z a zA
  • Javascript/EcmaScript 3 支持 ISO 8601 日期解析吗?

    您目前如何解析 ISO8601 日期 例如2010 02 23T23 04 48Z在 JavaScript 中 使用下面的代码时 某些浏览器会返回 NaN 包括 Chrome 但 FF3 6 可以工作 你可以在这里尝试一下http www
  • C# Eval() 支持 [重复]

    这个问题在这里已经有答案了 我们需要在运行时评估对象中的值 同时我们有确切成员路径的文本语句 例如 myobject firstMember secondMember 3 text我们考虑使用正则表达式解析这个文本语句 然后使用反射评估文本
  • Scikit-Learn:所有训练示例中都存在标签而不是 x

    我正在尝试使用 SVM 进行多标签分类 我有近 8k 个特征 并且还有长度接近 400 的 y 向量 我已经有二值化的 Y 向量 所以我没有使用MultiLabelBinarizer 但是当我将它与 Y 数据的原始形式一起使用时 它仍然给出
  • R 中的关联度量——Kendall 的 tau-b 和 tau-c

    是否有用于计算 Kendall tau b 和 tau c 及其相关标准误差的 R 软件包 我在 Google 和 Rseek 上的搜索一无所获 但肯定有人已经在 R 中实现了这些 有three 肯德尔 tau 统计数据 tau a tau
  • 将 null 传递给“XslCompiledTransform.Transform”方法

    我正在尝试使用 XSL 转换 XML 文档 我不太熟悉如何在 NET 中转换 XML 所以我使用一些示例代码 XslCompiledTransform xslTransformer new XslCompiledTransform xslT
  • FlatMapMerge、FlatMapConcat 和 FlatMapLatest 之间有什么区别?

    我无法区分这三个运算符之间的确切区别 文档用于 平面地图合并 https kotlin github io kotlinx coroutines kotlinx coroutines core kotlinx coroutines flow
  • 使用OpenCascade,如何快速进行2个形状的碰撞检测?

    使用OpenCascade 如何进行2个形状的碰撞检测 可能有几种方法 一是计算它们的交集 并检查交集结果 另一种方法是计算它们的最小距离 哪种方式更快 或者还有什么更快的方法 多谢 在 brep 数据结构上计算最小距离是一项相当昂贵的操作