원티드 프리온보딩 백엔드 인턴십 7th : 231106 TIL

원티드 프리온보딩 백엔드 인턴십 7th : 231106 TIL

1️⃣ 할당된 업무에 대한 진행상황.

In Progress: 맛집 조회 API
Done: 마이그레이션, 사용자 회원가입 및 로그인 API
Not Started: 사용자 정보와 정보 변경 및 맛집 조회 API

2️⃣ Today I Learned

/** 두 지점 위치의 거리 반환
  * @param point1 좌표 1
  * @param point2 좌표 2
  */
latLonToKm(point1: [number, number], point2: [number, number]) {
    // 두 좌표를 각각 위도와 경도 변수로 저장
    const lat1 = point1[1];
    const lon1 = point1[0];
    const lat2 = point2[1];
    const lon2 = point2[0];

    const R = 6371; // 지구의 반지름 길이 상수
    // 위도 및 경도 차이를 라디안 값으로 계산
    const dLat = this.toRadians(lat2 - lat1);
    const dLon = this.toRadians(lon2 - lon1);

    // 각 지점의 위도를 라디안 값으로 변환
    const radLat1 = this.toRadians(lat1);
    const radLat2 = this.toRadians(lat2);

    // Haversine 공식을 사용하여 두 지점 사이의 거리 계산
    const a =
                Math.sin(dLat / 2) * Math.sin(dLat / 2) +
                Math.sin(dLon / 2) *
                Math.sin(dLon / 2) *
                Math.cos(radLat1) *
                Math.cos(radLat2);
    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

    // 거리 반환 (단위: 킬로미터)
    return R * c;
}

/** 각도 라디안 값을 반환 */
private toRadians(degrees: number) {
    return degrees * (Math.PI / 180);
}

📁 수행 기업 과제 Repository

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.