Hvordan beregne Course & Avstand i VB
Avstanden og kurs mellom to punkter på en globus kan beregnes ved hjelp av to formler. Problemet er vel definert og fungerer som en enkel oppgave for et programmeringsspråk som Visual Basic. Imidlertid må et valg gjøres mellom en rett, uforanderlig kurs (Rhumb linjer) eller en mer effektiv buet kurs som tar fordel av kurven av jorden.
Bruksanvisning
1 Opprett et nytt prosjekt ved å klikke på "File" og "New Project".
2 Dra fire etiketter ut av verktøykassen og inn i prosjektet og arrangere dem i en linje fra topp til bunn. Klikk på hver etikett, og i egenskapsboksen, endre tekstfeltet slik at de leser "Starte Latitude", "Ending Latitude," "Starte Longitude", "Ending Lengde."
3 Dra fire tekstbokser ut av verktøykassen og plassere en rett til høyre for hver etikett. Klikk på hver tekstboks, og i egenskapsboksen, endre navnet feltet for å reflektere følgende navn:. "StartLatTextBox", "endLatTextBox", "startLongTextBox", "endLongTextBox"
4 Dra en knapp fra verktøykassen og legg den i bunnen av prosjektet. Dobbelklikk på ikonet for å taste inn koden editor.
5 Lim inn følgende i "button1_click" metoden:
Dim sLat = Double.Parse(startLatTextBox.Text)
Dim slong = Double.Parse (startLongTextBox.Text)
Dim Elat = Double.Parse (endLatTextBox.Text)
Dim eLong = Double.Parse (endLongTextBox.Text)
Dim DLAT = D2R (Elat - slat)
Dim dLong = D2R (eLong - slong)
Dim dPhi = Math.Log (Math.Tan (Elat / 2 + Math.PI / 4) / Math.Tan (slat / 2 + Math.PI / 4))
Dim q = Ny Double
Hvis (dPhi = 0) Then
q = Math.Cos (lamell)
Ellers
q = DLAT / dPhi
Slutt om
If (Math.Abs (dLong)> Math.PI) så
IIf (dLong> 0, dLong = (2 * Math.PI - dLong) * -1, dLong = 2 * Math.PI + dLong)
Slutt om
Dim earthRadius = 6371 REM kilometer
Dim avstand = Math.sqrt (DLAT ^ 2 + q ^ 2 * dLong ^ 2) * earthRadius
Dim peiling = Math.Atan2 (dLong, dPhi)
peiling = peiling * 180 / Math.PI
MessageBox.Show ( "Distance =" & avstand & ". Kurs =" & peiling)
Koden ovenfor gjør bruk av en "D2R" (grader til radianer) funksjon som ikke finnes ennå, så lim inn følgende kode rett under "end-funksjonen" statement for "button1_click."
Public Function D2R(ByVal Angle As Double) As Double
D2R = Vinkel * Math.PI / 180
End Function
6 Klikk på den grønne pilen for å starte programmet. Du kan nå legge inn noen par lengde- og breddegrader (i desimal format) og finne avstanden mellom dem (i kilometer) og lager (i grader) for å nå målet.
Hint
- Disse formlene brukes hver dag for praktisk navigasjon rundt jorden, men de har små unøyaktigheter på grunn av det faktum at jorden ikke er en perfekt kule. De er små nok til å gjøre liten forskjell for praktisk navigasjon, men finnes.
- Disse formlene beregne bærende hjelp Rhumb linjer for å holde stø kurs. Rhumb linjer, selv om de vil få deg til målet, ikke følger en stor sirkel. Gode sirkler krever stadige endringer i kurs for å holde seg på sirkel, men på grunn av kurven av jorden, kuttet bort noen avstand i forhold til Rhumb linje.