English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dieser Artikel analysiert die Methode zur Berechnung der Fahrtrichtung eines Autos in C#. Hier ist eine Zusammenfassung für alle:
1. Szene: Bekannte Autos während der Fahrt2GPS-Koordinatenpunkt A(n1,e1),B(e),berechnen Sie die Fahrtrichtung, die es fährt.
2. Analyse: Wie im Diagramm gezeigt, bekannt mit zwei Punkten A, B, kann man einen Punkt C annehmen, damit die drei Punkte einen rechten Winkel bilden. Jetzt kann man leicht die GPS-Koordinaten der Punkte A, B, C berechnen und die Längen der gegenüberliegenden Seiten a, b, c der drei Ecken berechnen. Gemäß dem Kosinussatz CosB = (a2+c2-b2)/2. Ac, um den Wert von CosB zu berechnen.
3.C# Implementierungscode.
/// <summary> ///Berechnung der Entfernung zwischen zwei GPS-Koordinaten /// </summary> /// <param name="n1">erster Punkte Breitengradkoordinate</param> /// <param name="e1">erster Punkte Längengradkoordinate</param> /// <param name="n2">zweiter Punkte Breitengradkoordinate</param> /// <param name="e2">zweiter Punkte Längengradkoordinate</param> /// <returns></returns> public static double Distance(double n1, double e1, double n2, double e2) { double jl_jd = 102834.74258026089786013677476285; double jl_wd = 111712.69150641055729984301412873; double b = Math.Abs((e1 - e2) * jl_jd); double a = Math.Abs((n1 - n2) * jl_wd); return Math.Sqrt((a * a + b * b)); } /// <summary> /// Bekannte zwei GPS-Punkte des Autos, um die Fahrtrichtung des Autos zu bestimmen /// </summary> /// <param name="n1">erster GPS-Punkt Breite</param> /// <param name="e1">erster GPS-Punkt Länge</param> /// <param name="n2">zweiter GPS-Punkt Breite</param> /// <param name="e2">zweiter GPS-Punkt Länge</param> /// <returns></returns> public static double GetBusDirection( double n1,double e1, double n2, double e2) { double e3 = 0; double n3 = 0; e3 = e1 + 0.005; n3 = n1; double a = 0; double b = 0; double c = 0; a = Distance(e1, n1, e3, n3; b = Distance(e3, n3, e2, n2; c = Distance(e1, n1, e2, n2; double cosB = 0; if ((a * c) != 0) { cosB = (a * a + c * c - b * b) / (2 * a * c); } double B = Math.Acos(cosB) * 180 / Math.PI; if(n2<n1) { B=180+(180-B); } return B; }
Interessierte Leser, die mehr über C# erfahren möchten, können die Themen auf dieser Website besuchen: "Zusammenfassung der C#-Stringoperationen", "Zusammenfassung der C#-Arrayoperationen", "Zusammenfassung der XML-Dateioperationen in C#", "Anleitung zur Verwendung häufiger Steuerelemente in C#", "Zusammenfassung der Verwendung von Threads in C#-Programmierung", "Zusammenfassung der C#-Excel-Operationen", "Zusammenfassung der Verwendung von WinForm-Steuerelementen", "C#-Datenstrukturen und Algorithmen Anleitung" und "Einführung in die objektorientierte Programmierung in C#"
Hoffentlich hilft dieser Artikel Ihnen bei der C#-Programmierung.
Erklärung: Der Inhalt dieses Artikels stammt aus dem Internet und ist dem ursprünglichen Urheber vorbehalten. Der Inhalt wurde von Internetnutzern freiwillig bereitgestellt und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie Inhalte finden, die möglicherweise eine Urheberrechtsverletzung darstellen, senden Sie bitte eine E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @, wenn Sie eine Beschwerde einreichen, und fügen Sie relevante Beweise bei. Bei nachgewiesener Rechtsverletzung wird diese Seite sofort Inhalte löschen, die eine Urheberrechtsverletzung darstellen.)