给定一个 kd 树状网格,如何找到两条最近的相交线
Given a kd tree-like grid, how to find two nearest intersecting lines
假设我有一个如下图所示的网格结构:
给定点D
,我想找到与D
创建的线相交的最近的点。
我需要一种方法来找到 C
和 E
,但找不到 A
或 B
。
A
不是候选者,因为它与 D
.
平行运行
B
不是候选者,因为它不与 D
相交。
我正在尝试找到存储此数据的最佳数据结构,以及设计支持此搜索的算法的最佳方法。我看过 KD 树,但我需要能够为每个点指定线维度。
我需要一个数据结构也需要为垂直和水平段的任意组合工作,例如:
在此示例中,如果我们在哪里搜索 A
,我们将 return 只是 C
。
最后:
在这个例子中,如果我们在哪里搜索 A
,我们将 return 什么都没有。
我最终将其实现为一个有向的、未加权的图表。图中的每个顶点都是一条线,具有 X、Y 坐标和方向。
顶点通过方向关系连接到它的父级。使用 X、Y 坐标和图形的层次结构,我们可以准确地重新创建布局。
假设我有一个如下图所示的网格结构:
给定点D
,我想找到与D
创建的线相交的最近的点。
我需要一种方法来找到 C
和 E
,但找不到 A
或 B
。
A
不是候选者,因为它与 D
.
B
不是候选者,因为它不与 D
相交。
我正在尝试找到存储此数据的最佳数据结构,以及设计支持此搜索的算法的最佳方法。我看过 KD 树,但我需要能够为每个点指定线维度。
我需要一个数据结构也需要为垂直和水平段的任意组合工作,例如:
在此示例中,如果我们在哪里搜索 A
,我们将 return 只是 C
。
最后:
在这个例子中,如果我们在哪里搜索 A
,我们将 return 什么都没有。
我最终将其实现为一个有向的、未加权的图表。图中的每个顶点都是一条线,具有 X、Y 坐标和方向。
顶点通过方向关系连接到它的父级。使用 X、Y 坐标和图形的层次结构,我们可以准确地重新创建布局。