C 查找与线关联的区域

C 查找与线关联的区域,c,linux,math,geometry,C,Linux,Math,Geometry,假设我有一个矩形区域。在这个矩形区域上,我可以画垂直线和水平线。这些线中的每一条都会创建与该线关联的小矩形区域(换句话说,该线用作小矩形区域的边界)。让我们将这些区域编号为1、2、3等 我的问题是:对于任何给定的线(垂直或水平),如何找到与该线关联的区域(或区域编号)(接触或边界)。确定这一点的最简单算法是什么 提前感谢你的帮助 这是我理解的部分答案(你的问题有点模糊): 您不能用矩阵[水平][垂直]表示您的区域吗? 然后,一条线由一个水平或垂直的索引表示,最终操作的是索引,而不是更大的结构:

假设我有一个矩形区域。在这个矩形区域上,我可以画垂直线和水平线。这些线中的每一条都会创建与该线关联的小矩形区域(换句话说,该线用作小矩形区域的边界)。让我们将这些区域编号为1、2、3等

我的问题是:对于任何给定的线(垂直或水平),如何找到与该线关联的区域(或区域编号)(接触或边界)。确定这一点的最简单算法是什么


提前感谢你的帮助

这是我理解的部分答案(你的问题有点模糊):

您不能用
矩阵[水平][垂直]
表示您的区域吗? 然后,一条线由一个水平或垂直的索引表示,最终操作的是索引,而不是更大的结构:


例如:Line
horizontal=2
生成索引为x s.t的区域。
上限>x>2

您是否要求在绘制大量线的情况下使用此选项(每次绘制线时,您都会得到更小的矩形)?我怀疑您想创建一个从一行到每个矩形的链表,并在每次平分一组矩形时更新该列表。另外,还要列出直线的第二个矩形列表,以便知道要更新哪些直线。这样,您就可以得到一个双链接索引,这样您就可以从一行到另一个区域,从一个区域到另一行。对你来说,这听起来像是一个可行的方向吗?谢谢你的回答。使用链接列表将一条线与一个区域相关联是很好的。但是你如何找到与一条线关联的区域,而不去寻找线与区域之间的交合点呢?假设开始时,您知道创建的行和列的数量。你将如何挑选每一条线,找出关联的区域并更新链接列表?如果不去寻找等分点,最简单的方法是什么?因为你有一个矩形网格,所有具有“leftx”的矩形将产生另外两个矩形。我看不出有什么办法可以做到这一点——尽管如果你坚持使用树方法,如果你记得区域的“历史”(这是两个区域平分的结果),那么你可以从根开始,如果父区域没有平分,就停止寻找平分区域。这意味着您通常只搜索区域的一小部分,这在区域数量非常大时非常重要。