English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
正文
1本文实例分析了C#计算汽车行驶方向的方法。分享给大家供大家参考,具体如下:2. Scénario : En connaissance des points GPS du véhicule en cours de déplacement1un point GPS A(n1,e
2),B(e),calculer la direction de déplacement de l'objet.2+c2-b2)/2. Analyse : Comme illustré sur la figure, en connaissant deux points A, B, on peut supposer un point C pour former un triangle rectangle. On peut alors facilement déterminer les coordonnées GPS des points A, B, C pour obtenir les longueurs des côtés opposés des angles a, b, c. Selon la loi de cosinus, CosB = (a
3. Code en C#.
/// <summary> ///Calculer la distance entre les coordonnées GPS de deux points /// </summary> /// <param name="n1>coordonnées en latitude du premier point</param> /// <param name="e1>coordonnées en longitude du premier point</param> /// <param name="n2>coordonnées en latitude du deuxième point</param> /// <param name="e2>coordonnées en longitude du deuxième point</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> /// Déterminer la direction de déplacement d'un véhicule en fonction de deux points GPS connus /// </summary> /// <param name="n1>premier point GPS en latitude</param> /// <param name="e1>premier point GPS en longitude</param> /// <param name="n2>deuxième point GPS en latitude</param> /// <param name="e2>deuxième point GPS en longitude</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; }
Pour plus d'informations sur C#, les lecteurs intéressés peuvent consulter les sujets spéciaux de ce site : "Résumé des techniques d'opérations de chaînes C#", "Résumé des techniques d'opérations des tableaux C#", "Résumé des techniques de manipulation des fichiers XML en C#", "Tutoriel des contrôles courants C#", "Résumé des techniques d'utilisation des threads en programmation C#", "Résumé des techniques d'opérations Excel en C#", "Résumé des techniques des contrôles WinForm", "Tutoriel des structures de données et algorithmes en C#" et "Tutoriel d'entrée en programmation orientée objet C#"
J'espère que cet article peut aider à la conception de programmes C#.
Déclaration : le contenu de cet article est extrait du réseau, propriété de ses auteurs respectifs, contribué et téléchargé par les utilisateurs d'Internet, ce site n'en possède pas la propriété, n'a pas été édité par l'homme, ni n'assume la responsabilité juridique pertinente. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation et fournir des preuves. Une fois confirmée, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)