2017-10-02 2 views
0

내 프로그램에서는 패널에서 그래픽 오브젝트로 경계선을 정의하는 Rectangle 오브젝트가있는 각 사각형 오브젝트가 그려져 있습니다. 최근에 일부 사각형에 선을 그어 중점적으로 그리는 방법을 추가했습니다. 문제는 다음과 같습니다.이 줄을 "지울"수 있어야합니다. 줄을 지우는 유일한 방법 인 것처럼 보이는 줄이 "영향을받은"사각형을 다시 그립니다.라인이 직사각형을 통과하는지 확인하는 방법

선이 PointA (x, y)에서 시작하여 PointB (x, y)에서 멈춘다 고 가정하면 다시 그리기 위해 패널에서 사각형을 어떻게 결정합니까? 각 줄을 일련의 점으로 분해 한 다음 어떤 Square.Rectangle에 점이 있는지 확인하는 것이 가장 좋습니까? 그렇다면 어떻게해야합니까?

+0

의 매우 효과적인 알고리즘을 고려? –

+1

가능한 [사각형이 직사각형과 교차하는지 확인하는 방법] (https://stackoverflow.com/questions/5514366/how-to-know-if-a-line-intersects-a- rectangle) –

+0

Not C# but https://www.openprocessing.org/sketch/454672 – PrincePolka

답변

0

각 줄을 반복하여 (그래서 레코드를 유지해야 함) 선이 사각형의 위쪽, 오른쪽, 왼쪽 또는 아래쪽 경계와 교차하는지 확인해야한다고 생각합니다. 일단 그려지면 선을 사용하여 아무 것도 할 필요가 없습니다. 결국 선 객체는 선이 직사각형과 교차하는지 여부를 추론하는 데 필요한 모든 정보를 포함합니다. 내가 권장하는 한 가지 방법은 컬렉션에 개체를 저장하여 개체를 반복 할 수 있도록하는 것입니다.

0

체스 판 셀은 서로 연결되어 있으므로 모든 셀을 확인할 필요가 없습니다. 그냥 라인을 따라 이동하고 세포를 만지십시오. 이 프로세스는 선 래스터 화와 약간 다릅니다.

라인 시작점을 포함하는 첫 번째 셀을 계산 한 다음 인접 셀이 라인별로 하나씩 교차해야합니다. 예를 들어 선의 방향이 오른쪽 위로 향한 경우 오른쪽 및 위쪽 모서리 등을 확인합니다.

당신이 효과 (대형 그리드)을 알고 있다면, 당신은 이미 사각형의 좌표가 어딘가에 저장해야합니까 Amanatides and Woo

관련 문제