단순 바보 퍼널 알고리즘은 어떻게 작동합니까?


답변:


18

알고리즘은 이전에 찾은 경로 (이 경우 삼각형 목록)로 시작합니다.

통로

Mikko의 블로그 게시물 맨 아래에있는 코드는 포털 배열을 구성합니다.이 배열은 경로 다각형 사이의 선 세그먼트를 나타내는 선 세그먼트 목록입니다. 스무딩 된 경로가 통과해야하는 "포털"입니다 (또는 "다각형 모서리 중간 점 추적"의 다각형 모서리). 포털 목록은 시작점과 목표점에서 줄 바꿈이 시작되고 끝납니다.

이 포털 목록은 그의 사진에서 노란색 점선으로 표시됩니다.

포털

알고리즘은 넓은 깔때기로 시작하여 깔때기 (AD)를 조이는 동안 포털 측면 점 (선 세그먼트의 끝점)을 따라 깔때기 측면을 반복적으로 앞으로 이동하여 진행합니다.

연산

즉, 앞으로 이동할 때마다 깔때기 가장자리가 안쪽으로 움직여야합니다. 이는 구면 과 잠재적 인 새면을 나타내는 벡터 의 교차 곱 으로 확인할 수 있습니다 ( 아래 이미지의 P × Q ; triarea2Mikko 코드 참조 ). 한 쪽 앞으로 이동해도 깔때기가 조여지지 않으면 포털의 현재 반복 (E)에 대해 해당 쪽을 업데이트하지 않습니다.

안쪽으로 이동

처리해야 할 다른 경우는 깔때기가 선분으로 퇴화 될 때입니다. 이를 설명하기 위해 알고리즘은 교차 곱을 다시 사용하여 측면 중 하나가 "잘못된"면에 있는지 확인합니다. 이번에는 깔때기 정점과 오른쪽 및 왼쪽 끝점 ( R × S in 아래 이미지).

퍼널을 퇴화시키다

이 경우 깔때기 정점과 올바른 측면 끝점의 벡터가 스무딩 된 경로에 추가되고 ( 위의 이미지에서 R ) 알고리즘이 끝 점이 새 끝점 (FG)으로 다시 시작됩니다. 물론 그것이 목표점이라면.


2
@Rolfcore 답이 분명합니까? 그렇지 않은 경우 어떤 부분을 개선해야합니까?
Eric

나는 그가 대답을 받아들이는 것을 잊어 버렸다고 생각합니다. 이것은 매우 좋으며 연속적으로 upvoted해야합니다 ^^.
GameDeveloper 2009 년

어쩌면, 엄청나게, 이동 F에서 당신은 남쪽을 가리키는 단단한 모서리가 가장 단단한 깔때기를 가능하게 할 가능성이 있기 때문에 처음부터 다시 시작하지 않는다고 말하지 않으므로 봇 측이 실제로 실패 할 때까지 기다려야합니다 하나뿐 아니라 테스트하십시오. 그래서 우리는 F 대신 F로 그렇게합니다. 어쨌든 좋은 설명 :)
GameDeveloper
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.