- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:给定一个球体列表,找到所有被球体完全包围的空白空间。
详细信息:这是我正在研究的一个问题,我试图确定位于蛋白质中的空腔。我得到了构成蛋白质的原子列表((x,y,z)坐标和半径)。然后我运行我的算法,通过检查是否可以将探针(给定半径)放置在一个位置而不与其他球体发生碰撞,从而找到位于蛋白质边界内的所有空白空间。有两种类型的空隙,空隙和空腔。空隙空间是可以通向蛋白质或位于蛋白质外部的空间。空腔是完全被蛋白质原子包围的空隙。这是我们正在处理的样本“蛋白质”的图片。
可以三个维度查看here .
在蛋白质的中心附近有一个空腔,您看到的穿过蛋白质的隧道将被视为空隙空间,因为它没有被原子完全包围。
示例:给定一个包含 26 个原子的列表,这些原子在 3 维网格中从 (0,0,0) 到 (1,1,1) 均匀分布。每个原子的半径为 0.25,并且位于任意轴上的 0、0.5 或 1 上。在点 (0.5, 0.5, 0.5) 处没有原子。如果我们要绘制这些原子的 3D 图形,它将是一个中心缺失的立方体形状。空腔将指定为 (0.5,0.5,0.5),半径为 0.25。可以假设这个空腔四周都被蛋白质包围。
示例图片:
请注意,以上只是立方体和蛋白质的二维表示。它实际上是 3D。
对于更大且形状不规则的原子组,如何确定空隙空间与空腔?
我正在考虑实现一个递归算法来检查每个方向以查看它是否可以达到图形的最大和最小边界,但我不确定这是否是正确的方法。
额外:是否有不同的算法会说示例中的空腔实际上是一个空隙空间,因为有非常小的“路径”可以到达蛋白质的外部?空腔必须完全被原子包围才能存在。任何具有通向蛋白质外部的路径(在任何方向上,不一定是笔直的)的空隙空间都不会被视为空腔。
最佳答案
很酷的问题。这是一个应该可以解决问题的算法:
S
.diam(X)
对于球体的直径 X
dist(X,Y)
距离 X
至 Y
;这与到 X
中心的距离相同到 Y
的中心减去半径之和。A
和 B
, 检查是否 S
可以直接在A
的中心之间通过和 B
(即 diam(S) <= dist(A,B)
?)。C
, 检查是否 S
可以同时触摸所有三个球体A
, B
, 和 C
,如果不存在其他球体。如果S
可以同时触摸所有 3 个,在 A
的中心之间画一个三角形, B
, 和 C
.
S
中心的可能位置同时触摸 A
和 B
形成一个圆圈。你想知道这个圆上是否有一个小于 diam(S) + diam(C)
的点远离中心C
.这是简单的几何学。S
中心的初始位置?从无限?您一次可以回答这个连接的组件。事实上,您甚至可以一次回答这个“边连接”组件,其中如果任何两个非顶点点可以通过不通过任何顶点的路径链接,则组件是边连接的。您可以通过简单的图形搜索来计算这些组件。S
的中心分开从无限。有几种方法可以做到这一点:
S
到达的三角形开始,并绘制从那里可以到达的每一张脸。这有点微妙,但该算法只是“从任何地方开始,排队边缘,将每条边缘交叉到与该边缘形成最小角度的面上,并在没有剩余边缘时停止。”请记住,同一个三角形的另一边可能是形成最小角度的面。第 3 步是正确的,因为如果你没有击中任何球体 C
同时“围绕”A
之间的边缘“滚动”和 B
,那么您可以到达该边缘的任何一侧。换句话说,任何阻止你走向无穷大的位置都必须涉及 S
触摸至少 3 个球体。
请注意,“特殊”情况会产生一些微妙之处,例如 S
时一次接触 4 个球体。您可以在执行第 3 步和第 4 步之前重新对形状进行三角测量,从而避免这些细微差别。
关于java - 确定一个球体是否被放置在它周围的其他球体完全包围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392896/
我目前有一堆看起来像这样的行: txt = "Can't print the value for "+arguments[1]+" before it's set"; 我在做 $('#mydiv').
我有一个网站,我试图以移动格式显示,但在宽屏幕上显示。我确信 iframe 是要走的路。 我正在尝试将 iframe 加载到 iPhone 的图像中。你可以看到一个例子 here . 一旦你看到它,你
我正在尝试使用 Xcode 中的 Storyboard创建如下所示的 View 。 为此,我添加了一个按钮和一个带有约束的标签,但这就是我得到的结果。文本不会从复选框下方开始。实现此目的的一种方法是创
我正在与 css 斗争以将文本包装在 div 中。我应用了空格、分词但没有任何反应。 链接 http://fiduciaryconsulting.org/index.php/services/90-s
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
正如标题所说 - 如何将文本环绕在伪元素周围?请参见下面的示例: .area { position: relative; } .area:before { content: '';
每次我尝试在 CSS 中做一些看似简单的事情时,它都行不通。 我有一个包含 460x160 图像的内容 div。我想做的就是将图片放在右下角,然后用文字环绕它。 text text
每次我尝试在 CSS 中做一些看似简单的事情时,它都行不通。 我有一个包含 460x160 图像的内容 div。我想做的就是将图片放在右下角,然后用文字环绕它。 text text
我有一个流式布局,它已经为我工作了一段时间。我漂浮 不是右就是左。一个 div 通常会有一个图像和一个标题。 文本项正确地环绕在 float 周围。但是某些元素没有: 将做以下两件事之一:他们要么侵入
这是我的问题。我在另一个 div 中有内联 block div。 .timeEvents { width: 100%; overflow: hidden; text-align: cent
使用float,我可以让文本环绕figure标签中的图像,而不是环绕figcaption标签,因为出色地。将 float 添加到 figcaption 不会这样做。有什么建议吗? 下面的代码在这里:h
如何让 div 2 环绕 div 1 ? (两个 div 都包含文本) +---++------------------+ | || | | 1 ||
我有一个场景,我需要转换一个可以被 *this 链接的函数返回 std::optional>而不是 T& (原因超出了这个问题的范围)。我使用 std::reference_wrapper 的原因是因
我想我彻底搜索了这个网站,但找不到我的问题的答案;我也认为这很简单,但是经过几个小时的困惑之后,我已经放弃并决定寻求帮助...... 这是我的问题;我有一个 DIV,里面有两个 DIV;第一个 DIV
我有一个文本区域字段,其右上角有一个 div 框。我进行了广泛的搜索,但找不到一种方法可以让输入文本区域的文本环绕 div。 #wrapper { position: relative; wi
所以我在使用 FancyBox 时遇到了这个问题,当滚动页面主体(主页)时,框会随机向左和顶部移动位置。 附上 GIF 演示问题: 据我所知,我正在使用 Fancybox v2。 网址是here (在
我的 coinslider 周围有一个容器 div。我想围绕这个容器 div 包装文本。如何实现这一目标? 现在我的 HTML 设置如下: 我的 CSS 是这样设置的: #mycontain
每次我尝试在 CSS 中做一些看似简单的事情时,它都行不通。 我有一个包含 460x160 图像的内容 div。我想做的就是将图片放在右下角,然后用文字环绕它。 text text
我有一个名为“content”的 DIV,其中我有一个图像作为边框/框架,我想绕过它。我都有一个大的整个框架(左、右、上、下),它与它应该的宽度相匹配,而且我把它切碎了,所以我有四个单边框图像(lef
我正在使用 fieldset 在 div 周围创建带标题的边框。 这是代码: Sproc Details:
我是一名优秀的程序员,十分优秀!