- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
好吧,假设我有一堆光盘放在已知固定位置的飞机上。每个圆盘的半径为 1 个单位。该平面完全被一组圆盘覆盖,事实上,它被一组圆盘广泛覆盖,在某些区域覆盖了一两个数量级。我想找到仍然完全覆盖飞机的光盘子集。最佳是好的,但不是必需的。
这是之前的插图:
这是后图:
在我看来,Delaunay 三角剖分存在一个双重问题,但我不太确定这对我有帮助。我也知道这与计算几何中的圆盘覆盖问题相似但不相同。这是一个我不知道名字的标准问题吗?
在我看来,可能的方法包括使用局部贪婪搜索来增加覆盖集,并使用最近对查询迭代地一次删除一个圆盘。我不确定两者是否都能保证正常工作,而且我还没有研究过细节。
哦,如果您没有猜到的话,应用程序是在进行查询时查找邮政编码质心的子样本以覆盖 map ,因此 n 约为 50,000。
最佳答案
以下基本上只是对您的问题的更精确的重述,但它可能会有所帮助:
这可能不会利用问题中所有可用的结构,但它肯定会为您提供最佳答案。
在步骤 1 中枚举区域并记录每个磁盘覆盖的区域是棘手的部分。区域通常不是凸面的,这使得相交测试变得棘手,并且您添加的每个圆都可能使区域数量翻倍。以下是我的处理方法:
忘掉每个区域的实际位置,只根据它在内部和外部的磁盘来定义区域。 IE。一个区域由长度为 n 的 0/1 值向量定义,每个值表示该磁盘内部或外部的区域是否包含在交集中——所讨论的区域是由所有这 n 个区域相交形成的。所以原则上你最多可以有 2^n 个区域,但实际上一些(大多数)向量会产生空区域,因为它们需要与两个没有交集的圆盘相交——谢天谢地,这很容易测试。递归生成所有非空区域应该很简单,除了...
不幸的是,我现在发现执行完整交叉测试是是必要的,因为并不总是能够判断区域何时为空。关键的反例是,给定两个有少量重叠的圆盘 A 和 B,另一个圆盘 C 与 A 和 B 分别重叠,这取决于所有 3 个圆盘的位置,所有 3 个圆盘的交集可能会也可能不会是非空的。 (要看到这一点,请在绘图程序中以 50% 的不透明度绘制 3 个不同颜色的圆盘,然后移动它们。)
由于生成非空区域的确切列表看起来需要大量工作并且由于相交测试需要很长时间,并且您声称不需要最佳解决方案,您可以尝试使用网格样本点作为“要覆盖的事物”的集合,而不是非空区域的确切列表。确定哪些磁盘覆盖了给定的样本点非常简单。然后像以前一样解决最大集合覆盖。
要确定没有间隙,请重新运行几次,每次随机抖动样本点的坐标。增加样本点的密度,直到最终结果没有变化。
关于algorithm - 在二维平面上找到(近)最小覆盖圆盘集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4069628/
我有一个对象: [ { TEAMGROUP: "AB", TEAMNAME: "TEAM1", SPRINTS: [ { ID: 1,
颜色模型和颜色空间之间的差异 RGB565 与 RGB888 有何不同任何建议链接 YUV vs RGB vs YCbCr。? 最佳答案 RGB 是一种加法颜色模型,其中红色、绿色和蓝色强度以不同的组
我正在从单个顶点/索引缓冲区绘制一个具有多个网格的完整对象,并且它们具有不同的纹理。因此,我想到将纹理 ID 与顶点一起从顶点着色器传递到片段着色器中的片段。问题是禁用插值。我正在使用 GLSL ve
我有一个包含 40000 个 float 的数组,用于指定 map 上的高度级别。我想在 OpenGL ES 2.0 中创建一个网格/平面,为该网格中的每个顶点分配一个来自该数组的高度值,以便它们创建
我真的很喜欢 IQ 的页面以及有关 SDF 的信息: ( https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm
我创建了 QPushButton在带有此样式表的 Qt Designer 中: QPushButton#pushButton { background-color: #ffffff; } QP
所以我正在寻找一些平面 map 的解决方法,因为它在 IE 上不起作用,我找到了这个:但我不太明白为什么它会起作用 var gadjets = [ {computers:['asus', 'hp'
child Actor 会不会太多?例如,如果我有一个有 10000 个 child Actor 的 Actor ,与每个有 1000 个 child Actor 的 10 个 Actor 相比,这会
我有一个由法线 (n) 和距离 (d)(距原点)定义的平面。我想把它改造成一个新的系统。 长路是这样的: 1) 将距离 (d) 与法线 (n) 相乘得到一个向量 (p) 2) 旋转 (R) 并平移 (
问题: 从球体中减去立方体会得到一个结果,其中 z 轴保留体积,但 y 轴和 x 轴产生平面圆盘,如图所示。我不确定为什么球体在那些方面正在失去体积。我正在使用 threeCSG 的典型减法。 代码:
我通过 SQL 查询从我们的 ERP 获取产品数据,由此返回的数据在大小级别非常平坦。一个产品有 3 个级别: 风格 颜色 尺寸 一种款式有多种颜色,一种颜色有多种尺码。 我创建了以下模型: publ
我正在尝试展开一些 json 数据。如果我像下面这样使用我的测试数据,一切正常! var data = [ { "title": 1, "parentids": [0] }, { "title
我希望使用 SceneKit 在 Swift 中的 3D 空间中绘制多个平面。具体来说,这些表面都将位于双曲面内。我以前从未绘制过自定义形状/对象,而且在尝试理解文档时我已经迷失了方向。 关于在 3D
预先感谢您阅读我的问题。我对 ARKit 非常陌生,并且已经学习了几个教程,这些教程向我展示了如何使用平面检测以及如何为平面使用不同的纹理。这个功能真的很棒,但这是我的问题。玩家是否可以先将飞机放置在
我正在阅读下面的源代码,我想知道我到底为什么要使用平面图方式。正如我所看到的,与通过 if 语句进行简单的 null 检查相比,实例化了更多的对象,执行了更多代码,这将在第一个 null 时终止,而不
我正在编写一个 Rails 应用程序并使用 Flat UI 进行样式设置。我目前正在将 flatui-rails gem 与 twitter-bootstrap-rails gem 结合使用。一切正常
我在维基百科中找到了射线平面相交代码的解决方案,该解决方案有效,我只是在其中求解线性方程组。 后来我找到了一些点到平面投影的代码,显然实现方式不同,并且在特定条件下也会产生不同的解决方案。 但是,我并
我正在使用 http://designmodo.github.io/Flat-UI/ 中的扁平 UI 我复制了复选框示例页面中的所有文件和代码。 但是我注意到该复选框并未显示为样式复选框,但在我单击初
这个问题已经有答案了: True Isometric Projection with HTML5 Canvas (3 个回答) 已关闭 7 年前。 我想创建一个等轴测图。该 map 存在等距矩形,如图
http://designmodo.github.io/Flat-UI/ 我想创建一个 Css 下拉菜单,我已经完成了下拉部分,但是我似乎无法模拟转换,也不知道如何编写这些代码。这是我目前所知道的,在
我是一名优秀的程序员,十分优秀!