与给定线段相交的线

时间:2012-09-09 15:14:45

标签: math geometry combinatorics

给定一些水平线段,我想找到一条与所有水平线段相交的垂直线。如果不存在这样的行,则该算法应该报告。此外,在多条垂直线的情况下,最理想的是找到距离所有水平线段的边界框中心最远的线。

我相信在组合几何中会出现这种情况,但我无法找到。任何人都可以给我一些关于我们怎么做的想法。

提前致谢。

1 个答案:

答案 0 :(得分:3)

我会循环遍历所有线段并找到以下值:

minxstart - smallest x value of all of the left end of your horizontal segments
maxxstart - largest x value of all of the left ends of your horizontal segments
minxend - smallest x value of the right end of your horizontal segments
maxxend - largest x value of the right end of your horizontal segments
miny - smallest y value of horizontal segments
maxy - largest y value of horizontal segments

如果minxend< maxxstart因为没有办法击中两者 包含这些值的行。

找到边界框的centerx:

centerx = (minxstart + maxxend) / 2

垂直线段的x值必须介于maxxstart和minxend之间。 选择一个最接近centerx的值,调用此newx。

您的垂直线段将从(newx,ymin)变为(newx,ymax)。