给定一些水平线段,我想找到一条与所有水平线段相交的垂直线。如果不存在这样的行,则该算法应该报告。此外,在多条垂直线的情况下,最理想的是找到距离所有水平线段的边界框中心最远的线。
我相信在组合几何中会出现这种情况,但我无法找到。任何人都可以给我一些关于我们怎么做的想法。
提前致谢。
答案 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)。