구에 지구에 대한 텍스쳐를 맵핑하고 경위도로 지정된 2개의 위치 사이에 흐름선을 표현하는 시각화에 대한 구현체입니다. 최종 실행 결과는 아래와 같습니다.
WebGL을 기반으로 하는 3차원 라이브러리 three.js를 사용했으며, class를 통한 모듈방식으로 구현하였는데, 전체 소스 코드는 다음 URL로 다운로드 받으시기 바랍니다.
GIS 개발자로써 가장 중요한 코드 중 하나를 언급하면 바로 경위도 좌표를 xyz 좌표계로 변환해 주는 함수인데요. 바로 아래의 코드입니다.
_getPosFromLatLonRad(lat, lon, radius) { var phi = (90 - lat) * (Math.PI / 180) var theta = (lon + 180) * (Math.PI / 180) let x = -((radius) * Math.sin(phi)*Math.cos(theta)) let z = ((radius) * Math.sin(phi)*Math.sin(theta)) let y = ((radius) * Math.cos(phi)) return {x,y,z} }
위도와 경도 그리고 구의 반지름을 받아 해당하는 xyz 축의 좌표를 반환합니다.