【发布时间】:2013-02-04 19:10:09
【问题描述】:
我有相同方向(但不完全平行)的二维线段。我想找出与给定线段最大重叠的线段。 我认为标量可以用来有效地计算这一点,但我的几何太差了,无法弄清楚这一点。 例如,在下图中;与其他线段相比,将暗线假定为给定线,红色突出显示的线段具有最大覆盖范围(或最长重叠,不确定我的术语是否正确)。
我的目标是找到代表暗线的最佳线 来自其他线段集。
我要查找的是对给定行具有最大覆盖率的任何行。这意味着,我想避免开始和结束在给定线段末端之外的线段。此外,当许多线路为给定线路提供最大覆盖时,我想避免较短的线路并需要较长的线路。 idea is to find another line which we can consider instead of that given line segment
高度赞赏帮助,因为稍后我想在编程环境中实现它。 谢谢
示例 1
例子2
要说我的意思是“覆盖”,我会说 在上图中:投影的蓝线完全位于深黑线内。但它太短了。但是,红线(投影线)的大部分位于黑线内,尽管红线的某些部分出去了。绿线完全脱离黑线。所以,我可以说红线用黑线提供最大的覆盖率..(我的想法正确吗?)
【问题讨论】:
-
我很难理解这一点:我想找出与给定线段重叠最大的线段。我以为你得到了 两个 或更多线段? 最大重叠是什么意思?
-
数学上,在欧几里得平面中,如果线段不平行,则最多有一个交点。您能否更清楚地定义您的问题是什么?你想知道给定两个片段在屏幕上显示时会有多少像素重叠吗?如果是这样,像 Bresenham 这样的分段渲染算法可能至少可以用来得到一个蛮力的答案。
-
没有“几乎平行”这样的东西。两条线要么相互平行,要么不平行。
-
@thang:对不起,我添加了一个示例图。可能是我没有使用正确的词汇。
-
实际上,您可以将 parallel-ness 定义为将一个线段的归一化方向向量投影到另一个线段的绝对值。这将是 1 表示平行,0 表示垂直,否则介于两者之间。
标签: c++ geometry computational-geometry