두 번째 좌표를 계산하는 공식은 here입니다. 하지만 자바로 변환하면 예상대로 결과가 나오지 않습니다.자바 - 주어진 좌표, 방위 및 거리에서 두 번째 좌표 계산
private Point get(double lat1, double lon1, double tc, int d) {
double lat = Math.asin(
Math.sin(lat1) * Math.cos(d)
+ Math.cos(lat1) * Math.sin(d) * Math.cos(tc)
);
double dlon= Math.atan2(
Math.sin(tc) * Math.sin(d) * Math.cos(lat1)
, Math.cos(d) - Math.sin(lat1) * Math.sin(lat));
double lon = ((lon1 - dlon + Math.PI) % (2 * Math.PI)) - Math.PI;
return new Point(lat, lon);
}
나는 위의 코드를 get (50, 10, 0, 0)과 같은 간단한 경우로 테스트했습니다. 그래서 결과가 첫 번째 점과 동일 할 것입니다 예상, 그러나 이것은 내가 가진 결과 : 두 번째 좌표를 계산하는 정확한 공식을 사용하여
Lat: 1.4432701894877245, lon: -3.8108244707674395
암 I을?
[편집] 여기에 내가 자바 코드로 변환하려고 공식은
의견에서 언급 한 바와 같이lat =asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
dlon=atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(lat))
lon=mod(lon1-dlon +pi,2*pi)-pi
왜 int인가요? –
tc의 단위는 라디안이고 d는 km입니다. 기본 유형이이 알고리즘의 결과에 영향을 미치지 않을 것이라고 생각합니다. – Hien
'cos (d)'에 아무런 의미가 없기 때문에 공식에 문제가 있다고 생각합니다. – talex