(www.movable-type.co.uk/scripts/latlong.html)의 수식을 사용하여 시작 지점을 반환하는 대상 지점을 반환하려고합니다. 포인트, 거리 및 베어링. 39 ° 33'28 "의 N : 나는 D, st_lat 및 웹 사이트에서 베어링을 입력하면vincenty 수식을 사용할 때 잘못된 계산이 계속됩니다.
int radius_km = 6371;
double d = 74.02;
double st_lat = 39.4450;
st_lat = Math.toRadians(st_lat);
double bearing = 106.1607;
bearing = Math.toRadians(bearing);
double end_lat = Math.asin(Math.sin(st_lat)*Math.cos(d/radius_km) +
Math.cos(st_lat)*Math.sin(d/radius_km)*Math.cos
(bearing));
end_lat = Math.toDegrees(end_lat);
, 나는이 얻을 :이 내 값입니다. 위의 코드 (웹 사이트에서 복사 한 코드)를 사용하면 다음과 같이 나타납니다. 39.25679699255662.
는 I은 주위보다 보면서 누군가 제산 소수 양 반환하지 않을 것을, 그래서으로 분할 대체 :BigDecimal distance = new BigDecimal("74.02");
BigDecimal strradius = new BigDecimal("6371");
BigDecimal d2 = distance.divide(strradius, 6, RoundingMode.HALF_EVEN);
double d = d2.doubleValue();
하고 화학식 변경 :
end_lat=Math.asin(Math.sin(st_lat)*
Math.cos(d)+Math.cos(st_lat)*Math.sin(d)*Math.cos(bearing));
대답 I 지금은 39.25680143864117입니다. 나는 뭔가를 놓쳤다 고 확신하지만 계산의 각 단계를 거쳐서 내가 어디에 있는지 알 수 없다. 아무도이 작업을 수행하는 방법에 대한 단계별 지침이 있습니까? 나는 그것을 매우 감사 할 것이다. 감사합니다. .
왜 반지름이 정수입니까? –
trig 기능을 사용하면 작은 거리가 너무 정확하지 않습니다 –
무엇이 좋겠습니까? – Dave