2012-09-09 50 views
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)。