Per fornire la direzione è necessario calcolare il rilevamento.
Per comprendere il rilevamento leggere this article.
Secondo questa article (section bearing) la formula è:
θ = atan2(sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ)
where φ1, λ1 is the start point,
φ2, λ2 the end point,
Δλ is the difference in longitude`
Ecco un esempio su come calcolare l'angolo (in gradi) tra due punti espressi in Lat/Lon. (fatto in C#)
Diciamo che Point
è una classe semplice con due attributi double
X (per longitudine) e Y (per latitudine).
public double ComputeBearing(Point start,Point end)
{
var φ1 = start.Y; //latitude 1
var λ1 = start.X; //longitude 1
var φ2 = end.Y; //latitude 2
var λ2 = end.X; //longitude 2
var y = Math.Sin(this.degreeToRadian(λ2 - λ1)) * Math.Cos(this.degreeToRadian(φ2));
var x = Math.Cos(this.degreeToRadian(φ1)) * Math.Sin(this.degreeToRadian(φ2)) - Math.Sin(this.degreeToRadian(φ1)) * Math.Cos(this.degreeToRadian(φ2)) * Math.Cos(this.degreeToRadian(λ2 - λ1));
var θ = Math.Atan2(y, x);
θ = this.radianToDegree(θ);
return θ;
}
utilizzando i seguenti metodi:
public double degreeToRadian(double angle)
{
return Math.PI * angle/180.0;
}
public double radianToDegree(double angle)
{
return angle * (180.0/Math.PI);
}
Usando ComputeBearing
vi sarà facile ottenere un angolo espresso in gradi facilmente utilizzabili come voce
fonte
2017-09-13 10:11:42
Credo che la parola che si sta cercando non è dando l'angolo. il rilevamento è la direzione di marcia visualizzata su una bussola quando si sposta dal punto a al punto b. – Roadie57