我有两组n个节点.现在我想将一组中的每个节点与另一组中的另一个节点连接起来.结果图应该没有交叉点.
我知道几种扫描线算法(Bentley-Ottmann-Algorithm来检查交叉点发生的位置,但除了蛮力方法之外,我找不到解决这些交叉点的算法.
一组中的每个节点可以连接到另一组中的任何其他节点.
任何解决这个问题的(一种有效的)算法的指针?无需实施.
编辑1:
以下是该问题的一种解决方案n=7:
黑点是一组节点,红点是一组.每个黑色节点必须连接到一个红色节点,以便连接它们的线不交叉.
EDIT2:
为了进一步说明:所有节点的位置都是固定的,结果图将有n个边.我也没有任何证据证明存在解决方案,但我无法创建一个没有解决方案的例子.我确信在那里有一个证据可以创建这样一个平面图.此外,只需要一种解决方案,而不是所有可能的解决方案.
algorithm intersection graph-theory line-segment planar-graph
简单地说,我有:
这是在视口坐标中,因此 +X 位于右侧,+Y 位于屏幕上方。
我需要一个函数,它接受这些参数并返回矩形边缘上的线(矩形中心 (0.5,0.5) 和点 (a,b) 之间)相交的点。
我知道如何使用给定的坐标在纸上完成此操作,但当涉及到代码时我无法弄清楚。另外,我意识到这样的问题已经在不同的线程中得到解决 - 但我在任何地方都找不到简单的输入到输出函数。
我在 Unity3D 引擎中执行此操作,因此最好使用 Javascript,但任何语言或伪代码都会有很大帮助,因为我可能可以手动转换它。
编辑 为了澄清,我正在寻找类似的东西:
function IntersectFromViewportCenter(x : float, y : float) {
...
return Point(x1, y1);
}
Run Code Online (Sandbox Code Playgroud)
其中 (x,y) 是圆外的点,(x1,y1) 是交点。
谢谢
我正在开发一个用于特定目的的 SVG 转换器。SVG版本是1.1,有点旧,但我必须使用这个版本。
我很难尝试实现剪辑列表。
剪辑结构如下。
struct
{
edgeList *path
clip *intersect
clip *union
} clip
Run Code Online (Sandbox Code Playgroud)
任何剪辑对象都可以有相交剪辑或并集剪辑,或两者都没有(但不能同时具有两者)。因此,如果存在相交的剪辑,我必须使用该剪辑路径与父级相交。如果有联合剪辑,我必须将其与父级合并。
根据SVG规范,我可以通过定义两个clipPath元素并在另一个clipPath的clip-path属性中使用其中一个来使用两个剪辑的交集。可以实现联合,以便您在 ClipPath 元素内部定义两个路径。
现在,如果我得到多个剪辑路径怎么办?举例来说,其中 5 个,
注意:合并后的黑色区域是最终的剪辑区域。

我可以尝试这样实现。
<defs>
<clipPath id=cp1>
<path>red</path>
<clipPath>
<clipPath id=cp2 clip-path="#cp3">
<path clip-path="#cp1">green</path>
<path>purple</path>
<clipPath>
<clipPath id=cp3>
<path>yellow</path>
<clipPath>
</defs>
Run Code Online (Sandbox Code Playgroud)
我被困在第五个剪辑了。
我该如何结合这个?此外,这种方法更难以编程方式实现。这个有更好的办法吗?如果没有其他办法,我想我将不得不将其作为 SVG 的限制而推迟。
我对 Google Earth Engine 非常陌生,我希望能够执行 ArcGIS 文档中所示的要素叠加分析:http://resources.esri.com/help/9.3/arcgisdesktop/com/gp_toolref/geoprocessing/overlay_analysis .htm
我似乎无法找到一种方法来帮助我在 GEE 中做到这一点。我有两个特征集合。两者都是大约 50 个多边形的集合,其中之一是研究地点,之一是区域,我想找出这些地点与区域重叠的位置,如果重叠,则该地点在每个重叠区域中所占的比例是多少。我尝试使用“交叉点”,但这仅显示站点和区域之间交叉点的面积。有一种“剪辑”方法可用于将站点剪辑到它们所在的区域,但这似乎仅适用于图像而不适用于要素集合。您对我如何做到这一点有什么建议吗?
谢谢
[编辑]这个问题确实是重复的;请参阅链接帖子上@jcalz 的回答:)
TS github上的相关讨论:Allowing from any
当我这样做时{ a: any } & { a: number },TypeScript 将其解析为{ a: any }. 但是,考虑到交集类型的含义,我认为它应该是{ a: number },因为只有numbertype 中的值实际上位于这两种类型的交集中。所以我不确定这种行为背后的理由 - 也许是因为any受到特殊对待?
我有一个这样的列表:
mylist <- list(PP = c("PP 1", "OMITTED"),
IN01 = c("DID NOT PARTICIPATE", "PARTICIPATED", "OMITTED"),
RD1 = c("YES", "NO", "NOT REACHED", "INVALID", "OMITTED"),
RD2 = c("YES", "NO", "NOT REACHED", "NOT AN OPTION", "OMITTED"),
LOS = c("LESS THAN 3", "3 TO 100", "100 TO 500", "MORE THAN 500", "LOGICALLY NOT APPLICABLE", "OMITTED"),
COM = c("BAN", "SBAN", "RAL"),
VR1 = c("WITHIN 30", "WITHIN 200", "NOT AVAILABLE", "OMITTED"),
INF = c("A LOT", "SOME", "LITTLE OR NO", "NOT APPLICABLE", "OMITTED"),
IST = c("FULL-TIME", "PART-TIME", …Run Code Online (Sandbox Code Playgroud) 我试图根据另一个 DataFrame 的列选择 DataFrame 的子集。
数据框看起来像这样:
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
Run Code Online (Sandbox Code Playgroud)
a b
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
Run Code Online (Sandbox Code Playgroud)
我想获取第一个数据帧的所有行,以获取两个数据帧中包含的列。我的结果应该是这样的:
a b
0 0 1
1 4 5
2 8 9
3 12 13
Run Code Online (Sandbox Code Playgroud) 假设您有两个集合,set1 非常大(几百万个值),而 set2 相对较小(几十万个值)。如果我想使用 .interstion() 函数获取这两个集合之间的值的交集,是否会根据输入的顺序改进运行时?
例如,其中一个会比另一个运行得更快吗?
set1.intersection(set2)
set2.intersection(set1)
Run Code Online (Sandbox Code Playgroud) 到目前为止,这是我的代码:
const mediaInViewport = document.querySelectorAll('.media');
const links = Array.from(document.querySelectorAll('.link'));
let actLink = links[0];
document.body.addEventListener('click', (event) => {
if (event.target.tagName === 'a') {
actLink.classList.remove('active');
actLink = links.find(link => event.target.href === link.href)
actLink.classList.add('active');
}
}, false)
observer = new IntersectionObserver((entries, observer) => {
entries.forEach((entry) => {
if (entry.target && entry.isIntersecting) {
const closestParent = entry.target.closest('section');
if (closestParent) {
actLink.classList.remove('active');
actLink = links.find(link =>
link.href.slice(link.href.lastIndexOf('#')) === `#${closestParent.id}`
)
actLink.classList.add('active');
}
}
});
}, {
threshold: 0
});
window.addEventListener('DOMContentLoaded', () => {
setTimeout( // …Run Code Online (Sandbox Code Playgroud)A我在 R3 空间中有一个由最小向量和 最大向量定义的轴对齐边界框,以及由具有端点和和半径的B线段定义的胶囊。我想检查这两个形状是否相交。abr
我知道如果胶囊的定义线段与 AABB 相交,这两个形状实际上会相交。然而,我该如何处理剩余的情况,其中线段不与 AABB 相交,但胶囊仍然与 AABB 相交。
intersection ×10
geometry ×2
python ×2
algorithm ×1
clip ×1
dataframe ×1
graph-theory ×1
indexing ×1
javascript ×1
line-segment ×1
list ×1
match ×1
overlay ×1
pandas ×1
planar-graph ×1
python-3.x ×1
r ×1
runtime ×1
set ×1
svg ×1
typescript ×1
union ×1
unityscript ×1
vector ×1