2011-05-02 6 views
0

휴, 큰 것 같았습니다.
Diagram
맞아요, 그래서 사각형의 경계와 원점에서 캐스팅 된 두 개의 선에 두 점이 있습니다. 단순화를 위해 P1/P2의 배열은 임의적이다.사각형의 두 점 사이에서 사각형 경계를 반복합니까?

내 질문은 사각형의 녹색 영역 (기본적으로 가장 작은 영역)을 반복 할 수 있습니까?

구현 : 내가 만들고있는 게임에서 시야 효과를 만들고 싶습니다. 원점은 현재 뷰포트 (직사각형)의 아무 곳이나 올 수있는 플레이어입니다. 선의 방향은 플레이어가 향하고있는 방향에서 벗어납니다. 녹색 지역의 모든 위치를 원점에서 추적하여 장애물을 확인하려고합니다.

내가 코드 예제 응답, 언어,하지만 선호 바람직하게는 C#

+0

질문에 대답 할 수 없습니다. "루프 스루 (loop through)"란 무엇을 의미합니까? 직사각형에 루프를 만들려면 무엇이 필요합니까? –

+0

강조 표시된 영역의 각 정수 좌표를 반복합니다. –

답변

1

내가 당신이 원하는 것은이 같은 것입니다 생각 :

(P1.y == P2.y) 
? 
(
    C.x >= P1.x && C.x <= P2.x 
) 
: 
(
    (C.x >= P2.x && C.x <= R.right && C.y == P2.y) || 
    (C.x >= P1.x && C.x <= R.right && C.y == P1.y) || 
    (C.x == R.x && C.y <= P1.y && C.y >= P2.y) 
) 

이 P1 있다고 가정합니다

모든 사각형 R의 일부입니다 녹색 선에있는 다음과 같은 기준을 C 좌표 동일한 라인에 있지 않을 경우 P2보다 아래에 있고 P1이 동일한 라인에 있으면 P2보다 P1이 먼저옵니다.

+0

그래서이 사각형의 경계에있는 모든 점을 반복하고 각 점을 확인하면 녹색 영역의 모든 점에 대해 true를 반환할까요? –

+0

이미지에 녹색 영역이 없습니다. 귀하의 질문에 표시된대로 ** ** ** 녹색 점에 대해서만 true를 반환합니다 ... –

+0

죄송합니다, 나는 내 질문을 misworded. 그러나 그렇습니다. 그것이 바로 제가 원하는 것입니다. –

0
처음 화면으로 모든 것을 그리는 것이 당신이 원하는 (시야)를 할 수있는 간단한 방법을 상상하는 것

, 사방을 보지 못하도록 검은 색으로 그립니다.

그래서 기본적으로 어둠을 안개없는 화면에 그립니다.

+0

나는 그림에 대한 도움을 원하지 않는다. 이것은 내가 알아낼 수 있도록 ** 숨겨져 야 할 필요가있는 것입니다 **. –

1

는 "녹색 지역"에있는 개체를 발견하고 싶다면 ...

, 당신은 당신이 (원산지 관심있는 다각형의 정점을 계산할 수있는 사각형의 크기를 알고 가정 P1, P2 및 보이는 직사각형 모서리)를 사용하여 객체를 반복하면 폴리곤 감지에서 점을 사용하여 내부에있는 것을 찾을 수 있습니다.

랜돌프 프랭클린 예를 들어. 내부 점은 1, 외부 점은 0을 반환합니다 ...

int pnpoly(int npol, float *xp, float *yp, float x, float y) 
{ 
    int i, j, c = 0; 
    for (i = 0, j = npol-1; i < npol; j = i++) { 
    if ((((yp[i] <= y) && (y < yp[j])) || 
     ((yp[j] <= y) && (y < yp[i]))) && 
     (x < (xp[j] - xp[i]) * (y - yp[i])/(yp[j] - yp[i]) + xp[i])) 
     c = !c; 
    } 
    return c; 
} 
관련 문제