2011-03-30 4 views
1

그리드의 한 필드에서 다른 필드까지 직각으로 이동하는 "스텝"의 양은 어떻게 계산합니까?그리드의 한 필드에서 다른 필드로의 스텝 량은 직각입니까?

나는 개발중인 게임을위한 A * 길 찾기 시스템을 구현 중이며,이 간단한 수학 연산이 진행 중입니다.

아마 3 학년 재학해야합니다. 하하.

+0

x 거리와 y 거리? 나는 정확하게 이해하고 있는가? – Tesserex

답변

3

정확하게 이해하면 필요한 x, y 움직임을 추가한다고 생각합니다. 감안할 때, 두 지점 (x1,y1)(x2,y2) 후 거리 후이다 ("직교 이동"가정은 수평 및/또는 수직 이동 수단) :

abs(x1-x2) + abs(y1-y2) 

예를 들어, (3 위치 (1,1)에서 움직이는 , 4)는 오른쪽으로 2 칸 이동하고 총 3 칸 위로 이동하는 것을 의미합니다. abs(1-3)+abs(1-4) = 2 + 3 = 5

+0

이 답변이 맞습니까? Direct X 클래스에서는 피타고라스 정리를 사용하여 두 개의 격자 점 사이의 거리를 찾는 방법을 배웠습니다. 귀하의 대답은 다른 접근법 일지 모르지만 두 가지 해결책을 사용하여 동일한 결과를 기대합니다. 그리고 (1,1) (3,4)에서 번호를 쳤을 때 5가 아닌 4.4721이 나왔습니다. – clamchoda

+0

@Chris : OP에 대한 제 이해에 근거하여 정확합니다. 그는 움직임이 직각 (직각)이라고 말했다. 위치 (0,0)에서 (1,1)로 이동하려면 이동이 (0,0) -> (0,1) -> (1,1) 또는 (0,0) -> (1,0) -> (1,1)이다. 이것은 두 세포의 움직임입니다. 이 경우 그래프 용지의 직선이 sqrt (2)의 거리라는 것이 맞습니다. 그러나 OP를 이해하는 것처럼 움직임은 직선이 아닙니다. –

+0

아, 감사합니다. 마크! 나의 실수 마크. 나는 처음 읽었을 때 A *를 알아 채지 못했습니다. 나는 "길 찾기 시스템"을 읽었습니다. 조심해야합니다. 명확히 할 시간을내어 주셔서 대단히 감사합니다. – clamchoda

0

나는 이것이 단순한 수학 문제라고 생각합니다.

확실하게, 시작 x/y 값과 끝 x/y 값을 알고 계실 것입니다. 둘 사이의 거리를 얻으려면, 당신이 수행

DIST = SQRT을 (DX^2^2 DY +) DY는 DX는 점 의 x 좌표의 차이입니다

인 경우 점의 y 좌표 간의 차이.

예를 들어, 좌표 A가 A (15,20)이고 좌표 B가 B (35,5)라고합시다.

dx = 35-15 = 20; dy = 20-5 = 15;

따라서;

dist AB = sqrt (20^2 + 15^2) = 25.0 단위 사이의 dist.

이제 최종 답은 프로그램에 "단계"가 얼마나 많은지에 달려 있습니다. 스텝이 5 유닛이라면 (25/5) A 지점에서 B 지점까지 5 단계가 필요합니다.

관련 문제