2017-04-13 1 views
0

나는이 주제에 대한 다른 모든 기사를 살펴 보았지만 아무 것도 발견하지 못했습니다. 내 질문은 사각형의 네 모서리 점이 주어지며 회전에 관계없이 사각형 내부 또는 사각형에있는 점을 어떻게 찾을 수 있습니까? 이것에 대한 나의 목적은 각 인덱스가 포인트 위치를 나타내는지도를 나타내는 배열을 가지고,이 맵에 사각형을 배치하고 그것이 포함하는 포인트를 채울 수 있기를 원한다는 것입니다. 의사 코드뿐만 아니라 수학을 제공 할 수 있다면 크게 감사하겠습니다. 나는 자바와 RBX에 대해 잘 알고있다. 루아사각형 내부의 모든 점 찾기?

+0

http://stackoverflow.com/questions/17136084/checking-if-a-point-is-inside-a-rotated-rectangle의 가능한 복제본입니다. – lhf

답변

0

그냥 "채우기 사각형 알고리즘"과 당신은 솔루션과 예제를 많이 찾을 수 있습니다.

쉬운 방법 중 하나 : 래스터 (이미지)의 모든 행 (또는 열)에 대한

, 사각형과 교차를 계산합니다.

이렇게하면 채워야 할 간격 집합이 남습니다.

어쩌면이 또한 http://fivedots.coe.psu.ac.th/~montri/Teaching/240-422/filling1.pdf

0

이 당신을 위해 ... 여전히

하지만 것이 문제를 해결하는 간단한 방법 찾고있는 경우 나도 몰라 도움 읽기, 네 개의 점을 연결 선 그리기 알고리즘을 사용하고 간단한 플러드 채우기 또는 경계 채우기 알고리즘을 적용합니다.

참고 : 이러한 모든 알고리즘은 컴퓨터 그래픽으로 제공됩니다. 또한이 기법은 내부 점을 하나씩 채우는 것보다 훨씬 빠른 접근법이며 사각형 외부의 점에 대한 계산을 제거합니다.

채우기를 적용하기 전에 선 그리기 알고리즘을 사용하여 경계선을 그리고 newcol (newcolour)에 경계 값을 설정해야합니다. 그러면 아래의 채우기 알고리즘을 사용할 수 있습니다. 당신은 단지 새로운 색상으로 대체 할 사각형 오래된 색상의 내부의 점 (x, y)를 통과해야 곳

void floodfill(int x,int y,int old,int newcol) 
{ 
      int current; 
      //assign current with the color of x,y point 

      if(current==old) 
      { 

          //assign x,y point with newcol 

          floodfill(x+1,y,old,newcol); 
          floodfill(x-1,y,old,newcol); 
          floodfill(x,y+1,old,newcol); 
          floodfill(x,y-1,old,newcol); 
      } 
} 

당신은 위의 방법을 사용할 수 있습니다. 색상 값이 언급 한 배열의 정수 값이라고 가정합니다. 지점이 지역 내부 또는없는 경우

enter image description here