본문 바로가기
북마크/Q&A

랜드마크와 특정 물체 간 거리 계산하기

by david100gom 2025. 2. 4.

JavaScript로 랜드마크와 특정 물체 간 거리 계산하기

주어진 정보

  • 랜드마크(기준점)의 좌표: 위도(lat), 경도(lon), 고도(alt)
  • 물체의 방위각(Azimuth Angle, θ): 북쪽(0°) 기준 시계 방향
  • 물체의 고도각(Elevation Angle, ϕ): 수평선(0°) 기준 위쪽 방향
  • 물체의 고도(alt_object) (알려진 경우)

1. 거리 계산 방법

(1) 물체의 고도가 알려진 경우
삼각법을 이용하여 랜드마크와 물체 간의 거리 DD를 계산할 수 있습니다.

D=alt_object−alt_landmarktan⁡(elevation)D = \frac{alt\_object - alt\_landmark}{\tan(elevation)}

여기서:

  • alt_landmarkalt\_landmark = 랜드마크의 고도 (m)
  • alt_objectalt\_object = 물체의 고도 (m)
  • elevationelevation = 고도각(°)

(2) 물체의 고도가 알려지지 않은 경우

  • 물체가 지면(고도 0m)에 있다고 가정하면:

D=alt_landmarktan⁡(elevation)D = \frac{alt\_landmark}{\tan(elevation)}


2. JavaScript 코드 구현

1) 물체의 고도가 주어진 경우

function calculateDistance(altLandmark, altObject, elevationAngle) {
    // 각도를 라디안으로 변환
    let elevationRad = elevationAngle * (Math.PI / 180);
    
    // 거리 D 계산
    let D = Math.abs((altObject - altLandmark) / Math.tan(elevationRad));
    
    return D;
}

// 예제 입력
let altLandmark = 50;      // 랜드마크 고도 (m)
let altObject = 100;       // 물체 고도 (m)
let elevationAngle = 30;   // 고도각 (°)

let distance = calculateDistance(altLandmark, altObject, elevationAngle);
console.log(`랜드마크와 물체 간 거리: ${distance.toFixed(2)} m`);

2) 물체의 고도가 알려지지 않은 경우 (지면 기준)

function calculateDistanceToGround(altLandmark, elevationAngle) {
    let elevationRad = elevationAngle * (Math.PI / 180);
    let D = Math.abs(altLandmark / Math.tan(elevationRad));
    return D;
}

// 예제 입력
let altLandmark2 = 50;      // 랜드마크 고도 (m)
let elevationAngle2 = 45;   // 고도각 (°)

let distance2 = calculateDistanceToGround(altLandmark2, elevationAngle2);
console.log(`지표면 기준 거리: ${distance2.toFixed(2)} m`);

3. 실행 예제

1) 물체의 고도가 있는 경우

입력:

calculateDistance(50, 100, 30);

출력:

랜드마크와 물체 간 거리: 86.60 m

2) 물체가 지면(고도 0m)에 있는 경우

입력:

calculateDistanceToGround(50, 45);

출력:

지표면 기준 거리: 50.00 m

4. 결론

  • 물체의 고도가 주어지면 삼각함수를 사용하여 정확한 거리 계산 가능.
  • 고도가 없으면 지면(고도 0m) 기준으로 거리 계산 가능.
  • JavaScript를 이용하여 웹에서 실시간 거리 계산 가능 (예: 지도 API, 감시 시스템, 드론 추적 등). 🚀

댓글