2013-06-16 2 views
4

'도피'알고리즘을 만들고 싶습니다. 먼저 '안전한'점을 찾고 싶습니다. 즉, 다른 지점과 상대적으로 먼 지점을 가리 킵니다.n 개의 다른 점에서 가장 멀리 떨어진 점 찾기

이것은 2D로 (중요하지는 않음) 고정 된 크기의 원 내에서 발생합니다.

저는 제곱 된 거리의 합계가 가장 좋은 점수가 가장 멀리 떨어져있는 좋은 시작 방정식을 생성한다고 추측합니다.

포인트를 집어내는 방법으로는 X, Y를 풀 수 있다고 생각하지 않지만 근사값이면 충분합니다.

나는 약간의 독서를했고, 원의 영역을 커버하기 위해, 당신은 7 절반 크기 (육각을 형성 센터와, 그리고 중앙에 일곱 번째) 원

내가 반복 수를 필요가 있다고 판단 이것들을 통해, 모두가 서클 안에서 시작됩니다. 내가 가장 좋은 득점 영역을 선택했을 때, 나는 그것들을 7 구체로 계속 나눌 수있었습니다. 물론 원 원형 밖에있는 점은 제외합니다.

그런 다음 원하는 정밀도 또는 원하는 수준으로 반복 할 수 있습니다.

접근 방법을 확장하려면 위치에 도달하는 데 시간이 걸리며 위치가 안전 할 수는 있지만 그 사이의 이동은 불가능할 수도 있습니다. 방정식에 거리를 어떻게 포함시켜야 좋은 솔루션을 얻을 수 있을까요?

나는 새로운 점까지의 거리를 제곱하고 점수로 곱하고 거기에서 반복 할 수 있다고 가정한다. 그것은 강하게 지방의 지점을 좋아할 것이다. 그러나 나는 그것이 좋은 행동이다라고 상상한다. 그것은 가까운 곳에서 안전한 지점을 해결하려고 시도 할 것이고, 다시 계산할 때 '밖으로'를 발견하고 안전하게 몰래 빠져 나갈 수 있습니다.

이것에 대한 의견이나 이전에이 문제가 있었습니까? 내가 볼 때 특별히이 문제를 발견 할 수 없었습니다.

편집 : 나는 운의 알고리즘의 C#을 구현에서 가져오고, 또한 내가 이해하지 않는 한, 의사 원형 제약 조건을 만들 내 포인트 주위에 몇 점을 추가 한

Voronoi using Fortune's Algorithm

알고리즘을 사용하면 수동으로 조정할 수 있습니다.

이제 파란색 선이 노드 사이의 경로를 생성한다는 것을 알았습니다. 나는 이들의 길이와 주변 지점들 사이의 거리를 사용하여 경로를 계산하고 (통과 할 시간과 위험한 시간) 안전에 대해 무게를 잰다. 동작. 이러한 상호 작용 방식을 가지고 노는 것으로, voronoi를 사용하여 내가해야 할 일의 대부분을 없앨 수 있습니다. 또한이 알고리즘을 사용하여 LEC를 결정하고 그 지점에서 스폰합니다.

+1

[this] (http://stackoverflow.com/a/4262982/645270)이 적합하다고 생각합니다. – keyser

+0

그래서 가장 큰 빈 구를 찾으려고하면 같은 결과가 나옵니까? – pcaston2

+0

예. 이것이 내가 찾고 있었던 것이라고 생각합니다. 나는 계속 읽을 것입니다. 나는 이것이 왜 내 검색에서 나타나지 않았는지 모르겠다. 정확히 내가 입력 한 것과 정확히 일치한다. – pcaston2

답변

0

위치 집합의 convex hull을 가져갈 수 있습니다. 볼록 선체의 꼭지점은 "가장 멀리있는"점 집합을 제공합니다. 다음으로, 도망 치고있는 점의 centroid을 가져 와서 볼록한 선체의 어느 정점이 중심으로부터 가장 멀리 떨어져 있는지를 결정하십시오. 예를 들어, 경기장을 사분면으로 나눔으로써 속도를 높일 수 있습니다 - 가장 가까운 사분면에있는 꼭지점을 테스트하기 만하면됩니다 (예 : 중심이 양수 -x 양수 -Y 사분면에있는 경우, 네거티브 -x 네거티브 사분면의 꼭지점 만 확인하면됩니다.); 경기장이 불규칙한 모양이라면 이것은 옵션이 아닐 수도 있습니다.

가장 먼 지점으로 도망가는 대신에 출발점이있는 경우 (예 : 도망가는 지점이 적이며 플레이어 캐릭터가 현재 X 지점에 있음) 시작 지점) 플레이어가 가장 멀리 떨어진 지점으로 피신하는 대신 플레이어가 적의 중심에서 가장 빨리 궤적을 따르는 궤도를 따라 가도록 할 수 있습니다. 적의 중심에서 플레이어의 위치를 ​​통해 광선을 그립니다 그 광선은 플레이어가 도망 가야 할 방향을 알려줍니다.

플레이어 캐릭터가 둘러싸인 경우이 두 알고리즘은 말도 안되는 결과를 제공하지만이 경우 플레이어 캐릭터는 실제로 실행 가능한 옵션이 없습니다.

+0

이것들은 좋은 제안입니다, 나는 열심히 convex hull과 Voronoi 그래프를 이해하려고 노력하고 있습니다. 이 솔루션 유형은 임박한 상황에서 도망 치려고 할 때 사용되며 미래에 도망 가기 어려울 수 있습니다. 그들이 실제로 중간에 갇혀 있다면 그들은 대신 공격 할 것이고, 센트로이드에 매우 가깝다면 더 안전한 지점을 찾기 전에 특정 거리를 달아날 것입니다 (이 알고리즘 사용) – pcaston2

관련 문제