2012-09-09 2 views
0

일부 수평선 선분이 주어지면 모든 수평선 선분과 교차하는 수직선을 찾고 싶습니다. 알고리즘은 그러한 행이없는 경우보고합니다. 또한 수직선이 여러 개인 경우 모든 수평선 선분의 경계 상자 중심에서 가장 먼 선을 찾는 것이 바람직합니다.주어진 선분을 교차하는 선

나는 조합 기하학에 이런 종류의 것이있을 것이라고 확신하지만, 찾을 수 없다. 아무도 우리가 어떻게 할 수 있는지에 대해 나에게 약간의 아이디어를 주실 수 있습니까?

미리 감사드립니다.

나는 당신의 선 세그먼트의 모든을 반복하고자 다음과 같은 값을 찾을 수

답변

3

: 그 값을 포함 라인을 모두 공격 할 수있는 방법이 없기 때문에 < maxxstart을 minxend 경우

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 

없음 라인이 존재한다.

centerx = (minxstart + maxxend)/2 

당신의 수직 라인 세그먼트 (segment)의 x 값이 maxxstart 및 minxend 사이해야 할 것이다 :

는 경계 상자의 centerx을 찾습니다. centerx에 가장 가까운 값을 선택하고이 newx를 호출하십시오.

귀하의 수직선 세그먼트는 (newx, ymin)에서 (newx, ymax)로 변경됩니다.

관련 문제