位置「A」から位置「B」までのコースを計算する方法
- 位置「A」と「B」の緯度/経度が必要です
GeodeticCalculator
クラスのインスタンスを取得する
- 電話
setStartingGeographicPoint()
- 電話
setDestinationGeographicPoint()
- 電話
getAzimuth()
- 方位角から 10 進数への変換
位置「A」から始まる推測航法位置「X」の計算方法
- 位置「A」の緯度/経度が必要です
- 船舶の現在の進路を方位角で把握する必要があります
- 移動距離をメートル単位で取得する必要があります (またはこれを速度 * 時間として計算します)
GeodeticCalculator
クラスのインスタンスを取得する
- 電話
setStartingGeographicPoint()
- 電話
setDirection()
- 電話
getDestinationGeographicPoint()
これは、私が自分で実装するために必要ないくつかの簡単な単位変換方法です。方位は少しわかりにくかったです。方位角の範囲は -180 から +180 で、方向「角度」が時計回りに増加するにつれて値が増加します。つまり、-180 は南、-90 は西、0 は真北、+90 は東、+180 も南です。
public static final double KNOTS_PER_MPS = 1.9438444924406;
public static final double MPS_PER_KNOT = 0.514444444444444;
public static double metersPerSecondToKnots(double speedInMetersPerSecond) {
return speedInMetersPerSecond * KNOTS_PER_MPS;
}
public static double knotsToMetersPerSecond(double speedInKnots) {
return speedInKnots * MPS_PER_KNOT;
}
public static double courseInDegreesToAzimuth(double courseInDegrees) {
Validate.isTrue(courseInDegrees >= 0.0 && courseInDegrees <= 360.0);
double azimuth;
if (courseInDegrees > 180.0) {
azimuth = -180.0 + (courseInDegrees - 180.0);
} else {
azimuth = courseInDegrees;
}
return azimuth;
}
public static double azimuthToCourseInDegrees(double azimuth) {
Validate.isTrue(azimuth >= -180.0 && azimuth <= 180.0);
double courseInDegrees;
if (azimuth < 0.0) {
courseInDegrees = 360.0 + azimuth;
} else {
courseInDegrees = azimuth;
}
return courseInDegrees;
}