-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Positions Berechnung mit VB6

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378

    Positions Berechnung mit VB6

    Anzeige

    Hi,

    also es ist mal wieder zum Haare raufen

    Ich muss den AscCos ausrechen und ich komm nicht auf das Ergebniss
    wie mit den Taschenrechner das allerdings richtig ist!

    Arkuskosinus(x) = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)

    wäre die Funktion für den AscCos (Invert Cosinus oder Cos-1)

    füge ich nun an der Stelle X meine Bsp.-Wert ein 0.4614 kommt immer
    1,091223762 raus und nicht die 65.34 ° was rauskommen sollen.

    Was mach ich den Bitte falsch

    Danke für eure Hilfe.

    By Ulli

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    49
    Beiträge
    368
    Hi Ulli,

    ich zitiere mal aus dem Bascom - Handbuch :

    ACos
    Action

    Returns the arccosine of a single in radians.

    Zitat Ende

    Die Winkelfunktionen werden im Bascom in Radiant berechnet.

    Gruß Klaus
    Eine verrückte Idee ist besser als keine

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    30
    Beiträge
    557
    Vllt noch zur Orientierung: "radiant" heißt im Deutschen "Bogenmaß".
    Umrechnen kann man das ganze wie folgt:
    Von Bogenmaß nach Grad: Wert mit 57.296 multiplizieren (Genau: 180/Pi)
    Von Grad nach Bogenmaß: Wert mit 0.01745 multiplizieren (Genau: Pi/180)

    Gruß, Trabukh
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    ja habe es nun so gemacht.

    Point1_Lati = (Text1.Text + (Text2.Text / 60) + (Text3.Text / 3600))
    Point1_Longi = -(Text4.Text + (Text5.Text / 60) + (Text6.Text / 3600))

    Point2_Lati = (Text7.Text + (Text8.Text / 60) + (Text9.Text / 3600))
    Point2_Longi = -(Text10.Text + (Text11.Text / 60) + (Text12.Text / 3600))

    L1 = Point1_Lati
    L2 = Point1_Longi
    G1 = Point2_Lati
    G2 = Point2_Longi

    Text15.Text = L1
    Text16.Text = L2
    Text17.Text = G1
    Text18.Text = G2


    D1 = Sin(L1) * Sin(G1) + Cos(L1) * Cos(G1) * Cos(L2 - G1)
    Text19.Text = D1
    Text20.Text = Cos(L2 - G1)
    D2 = Format(Cos(D1) * 180 / Pi, "0.000")
    Text13.Text = D2 * 60 'Entfernung
    Text14.Text = D2 'Winkel zum Ziel

    Warumn bekomme ich andere Ergebisse als wie mit meinen Taschenrechner?

    ---> φ1 = 41° 09' 28,0" N = 41,1578°, λ1 = 008° 38' W = -8,6333°
    ---> φ2 = 0° 40' 19,9" N = 0,6722°, λ2 = 061° 32' W = -61,5333°

    ->cos c = sin φ1 · sin φ2 + cos φ1 · cos φ2 · cos (λ1 - λ2)

    ---> 0,4618 = c = 62,5° = 3749' = 3749 sm

    So ich komm mit den obigen Programm nicht drauf???

    Was mach ich den falsch??

    Danke Leute

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    30
    Beiträge
    557
    D2 = Format(Cos(D1) * 180 / Pi, "0.000")
    Hier wurden die Klammern vergessen!
    D2 = Format(Cos(D1) * (180 / Pi), "0.000")

    Gruß, Trabukh
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    kommt auch mit der Klammer das falsche raus *grrrr*

    I komm net weiter

    Will Geographische Daten Grad'Minuten'Secunden Start -->Ziehl ausrechnen Winkel und Entfernung mit VB aber irgendwie wills net

    Evtl. noch jemand ne Lösung?

    by Ulli

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    so ich habs

    VB kann des nicht auf den direkten weg und somit hab ich mich mal auf die Suche nach Funktionen gemacht!

    Bin auch fündig geworden und man mus es zuvor auf Deg2 umrechen!

    Sieht nun wie folgt aus.

    Code:
    Option Explicit
    
    Dim Lat1
    Dim Lon1
    Dim Lat2
    Dim Lon2
    Dim L1
    Dim L2
    Dim G1
    Dim G2
    
    
    Const pi = 3.14159265358979
    
    
    Function acos(rad)
      If Abs(rad) <> 1 Then
        acos = pi / 2 - Atn(rad / Sqr(1 - rad * rad))
      ElseIf rad = -1 Then
        acos = pi
      End If
    End Function
    
    
    
    Function deg2rad(Deg)
        deg2rad = CDbl(Deg * pi / 180)
    End Function
    
    
    Function rad2deg(rad)
        rad2deg = CDbl(rad * 180 / pi)
    End Function
    
    Private Sub Command1_Click()
    
    Lat1 = (Text1.Text + (Text2.Text / 60) + (Text3.Text / 3600))
    Lon1 = -(Text4.Text + (Text5.Text / 60) + (Text6.Text / 3600))
    
    Lat2 = (Text7.Text + (Text8.Text / 60) + (Text9.Text / 3600))
    Lon2 = -(Text10.Text + (Text11.Text / 60) + (Text12.Text / 3600))
    
    L1 = Lat1
    L2 = Lon1
    G1 = Lat2
    G2 = Lon2
    
    Text15.Text = L1
    Text16.Text = L2
    Text17.Text = G1
    Text18.Text = G2
    
    Dim theta, dist, distance, Deg
    
      theta = Lon1 - Lon2
      dist = Sin(deg2rad(Lat1)) * Sin(deg2rad(Lat2)) + Cos(deg2rad(Lat1)) * Cos(deg2rad(Lat2)) * Cos(deg2rad(theta))
      dist = acos(dist)
      dist = rad2deg(dist)
      distance = Format(dist * 60, "0.000")
      Deg = Format(dist, "0.000")
         
    Text14.Text = Deg
    Text13.Text = distance
    
    
    
    End Sub

    So gehts nun, also damit kann man leben

    Und ab jetzt wird es erst Interessant!

    Es kommen GPS Daten hinzu und Log Daten

    Und zur Fehlerkorrektur kommt noch ein Privates DGPS dazu

    Wird also noch a bissl Arbeit

    by Ulli

    Tipps immer gerne willkommen!

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    30
    Beiträge
    557
    Hmm, komisch. Ich habe neulich eine Billiardsimulation mit VB gemacht, da ging das mit den Winkeln prima... komisch... ???
    Aber schön, dass es jetzt doch endlich geklappt hat!

    Gruß, Trabukh

    EDIT: Ich weiß jetzt, warum es bei dir nicht ging, die Grad-Variable MUSS als Double deklariert werden!!!
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi,

    hatte ich zuvor auch als Double

    By Ulli

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    30
    Beiträge
    557
    Naja, ansonsten fehlt bei deinem ersten Code nur noch die Konstante PI! Und die Werte L1, L2, G1 und G2 müssen auch vor den trigonometrischen Funktion umgerechnet werden. Aber das ist ja jetzt auch egal, Hauptsache, es funktioniert...

    Gruß, Trabukh
    "Der Mensch wächst am Widerstand" (Werner Kieser)

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •