2011-10-25 3 views
1

포리스트에 숨겨진 비컨이 있다고 가정 해 봅시다. 나는 헬리콥터로 숲을 날고, 임의의 간격으로 표지를 핑합니다. 각각의 핑에 대해 위도/경도 쌍과 그 지점에서 비콘의 신호 강도를 얻습니다 (그러나 방향은 없습니다).PHP : 위도/경도/신호 강도 데이터를 사용하여 비컨의 위치를 ​​찾으십시오.

  1. PHP에서 비콘의 위치는 어떻게 계산합니까?

  2. 나중에 내가 다른 판독 값을 얻는다면, 어떻게 이것을 비컨의 현재 위치 추정치에 추가 할 수 있을까요?

참고 : 우리는 숲 신호 강도에 영향을 미치는 방법을 모르지만, 우리는 효과가 균일 가정 할 수있다 - 비콘은 청소에, 또는 돌 아래에 묻혀 있었다.

+0

흠 ... 나는 숙제를 의심스럽게 냄새 맡습니다. –

+0

1. 할 수 없습니다. 처음에 제공 한 값은 벡터가 아닙니다. 2. 두 개의 값 쌍이 있더라도 그렇게 할 수는 없습니다. 당신은 비컨의 강도에 비례하여 거리를 제공하는 일종의 테이블이 있어야합니다. – John

+0

@Brian, 숙제가 아니라, 나를 믿어 라. 이것은 실제 적용을 가지고 있습니다. –

답변

1

나는 당신이 핑의 위도와 경도를 얻고 있다고 가정하고 있습니다.

2 x 2 정사각형 격자 (가능한 한 가깝게)에서 최소 4 개의 핑이 필요합니다. 더 많은 ping이 도움이 될 수 있지만 측정 오류를 처리해야합니다.

힘센 값으로 구성된 불쌍한 아스키 그림입니다. 북쪽에 있다고 가정합니다.

X (6 strength)    X (4 strength) 
. 
. 
. 
X (5 strength)    X (3 strength) 

전혀 계산을하지 않고, 당신은 비콘 당신이 이러한 측정을했다 어디의 중심의 서쪽 북쪽 서쪽 어딘가에 있음을 확인할 수 있습니다.

신호 강도 (대략)로 거리를 계산할 수 있으면지도의 한 지점에서 추측 할 수 있습니다.

거리를 계산할 수 없다면 지점이 있다고 생각되는 다른 2x2 정사각형 그리드로 핑하십시오. 어떤 점에서, 강도는 거의 평등 할 것이고, 표지가 광장의 중심에 있다고 가정 할 수 있습니다.

헬리콥터에서 도움이되고 시간이 많이 걸리지 않기를 바랍니다.

수정 사항 : 신호의 신호 강도는 거리의 제곱에 반비례합니다. (distance = sqrt(x factor/signal strength)) x 팩터 (12)을 이미 결정 했으므로 신호 강도 9가 맵에서 반경 1.1 인치의 원을 나타내며 신호 강도 3이 반경 2.0 인치의 원을 나타냅니다 지도.

그래서 왼쪽 아래에 핑이 생기면 핑을 맵에 놓고 반경 1.5 인치의 원을 그릴 수 있습니다. 왼쪽 상단에 핑이 생기면 핑을 맵에 놓고 반경이 1.4 인치 인 원을 그립니다.

이제이 두 원이지도의 어딘가에서 교차합니다. 그 교차점의 어딘가에서 신호의 위치가됩니다.

이제 헬리콥터가 돌아 서서 오른쪽 상단에 핑이 생깁니다. 반지름이 1.7 인치 인 원을 그립니다. 그런 다음 오른쪽 하단에 핑이 생기고 반경이 2 인치 인 원을 그립니다.

네 개의 동그라미가 교차하는 부분은 작은 거친 사변형을 만들어야합니다.

당신은 사변형의 중심으로 날아가 다른 핑을하십시오. 꽤 높은 신호 강도를 얻어야합니다. 로프를 내려 놓고 신호등과 좌초 등산객을 찾아 로프로 돌아가서 헬리콥터가 당신과 좌초 등산객을 안전하게 끌어 내리게하십시오.

+0

이 작동합니까? –

+0

@Adrien Hingert : 귀하의 질문을 이해할 수 없습니다. 너는 핑 (ping)의 위도와 경도를 갖고 있지 않니? 지도에서 핑을 플로팅하여 핑의 상대 위치를 볼 수 있습니다. –

+0

당신이 제공 한 정보로 어떻게 수학을 할 것인지는 잘 모르겠습니다. –

관련 문제