【发布时间】:2021-04-19 10:27:44
【问题描述】:
我试图弄清楚如何为存储“线段”的二叉搜索树的元素设置关键字。我正在阅读的计算几何书说
更详细地说,我们将与扫描线相交的线段存储在平衡二叉搜索树 T 的叶子中。沿扫描线的线段从左到右的顺序对应于从左到右的顺序T中的叶子
假设关键是事件点的 x/y 值(此处为 A 或 B),在以下情况下状态结构将如何保持线段的正确顺序(虚线是扫描线)。
B 显然在 A 之前击中扫描线,但如果 B 的段加上它的 x/y 值,它将在状态行中的 A 之后。
所以在我看来,状态行段的键不能是静态值,例如点的 x/y 值——但是这本书在这方面如何构建树时非常安静。我已经看到一些示例,将键作为 (m,b) 的元组,其中 m 是线条渐变,b 是 y 截距,但我不太清楚它是如何工作的。
【问题讨论】:
-
我认为关键是交点(即如果扫描线是水平的,则为 x,如果为垂直,则为 y)。
-
没有静态排序。每次扫描线碰到两条线段的交点时,这些线段就会在搜索树中交换位置。
-
我不太清楚你的意思,这两个段不相交——不仅如此,
B还没有在状态结构中。 -
我想我的问题是——当
B被添加到状态结构时,结构的什么键控将允许这个特定的段系统正确存储为排序B A。它不能是队列中点的x,y(也就是段的起点),因为这将为上述段提供A B的排序,因为A的x,y小于@ 987654332@ 的B。 -
键是对行的描述吗?因此,在上面的例子中,当我们在将
B添加到状态结构时搜索放置在哪里时,我们得到第一个节点A(本例中唯一的节点),插入扫描线的y值进入A的描述以获取A上的特定点,然后将其与我们的点B进行比较——B将位于A的左侧?
标签: algorithm computational-geometry