-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Winkel zum Ziel berechnen??? I dreh durch *g*

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

    Winkel zum Ziel berechnen??? I dreh durch *g*

    Anzeige

    Hi Leuts,

    also neues thema *g*

    Ich habe zwei Koordinaten z.B 48°15'10''5 / 12°12'11''2
    mein ziel ist in z.B------------> 48°15'05''0 / 12°10'00''0

    was habe ich nun für einen Winkel zum Ziel????

    Bei mir kommt immer ein etwas kleiner wert raus

    Mein Code sieht momentan so aus.
    acos und rad2deg sind in Funktionen drinn die stimmen !!!
    ------------------------------------------------------------------------------------
    Dim theta, dist, distance, deg

    'Dezimal Umrechnung
    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)

    '----------------------------------------------------------------------

    theta = Lon1 - Lon2
    dist = Sin((Lat1)) * Sin((Lat2)) + Cos((Lat1)) * Cos((Lat2)) * Cos(theta)

    'Entfernungsberechnung
    dist = acos(dist)
    dist = rad2deg(dist)
    deg = Format(dist, "0")
    distance = Format((dist * 60 * 1.1515) * 1.609344, "0.00000")


    Text14.Text = deg
    Text13.Text = distance

    ------------------------------------------------------------------------------------

    Ich will eigentlich nur den Winkel zu meinen Ziel haben (gehe 320° dann kommst du zum Ziel *g*)


    Kann mir da jemand helfen???

    Bitte: wenn es geht mit einen Beispiel

    Dank an ALLE by Ulli

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.11.2004
    Ort
    Regensburg
    Alter
    38
    Beiträge
    344
    Evtl. verstehe ich deine Angaben jetzt auch falsch, aber Falls nicht: Du hast oben zwei Koordinaten (Länge + Breite). Du kannst deren Abstand zueinander berechnen, oder den Winkel den sie bzgl. einer Referenzachse einnehmen.
    Den Winkel für den Bot kannst du daraus aber nicht errechnen, ausser der hat einen Kompass.

  3. #3
    Gast
    Hi,

    ich will nur den Winekl errechen dien ich zum Ziel benötige, den Winkel des Bots bestimme ich mit einen Kompass und den Daten des GPS wenn er fährt das geht ja auch *g* aber ich komme nicht drauf welchen Zielwinkel ich benötige.


    by Ulli

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.08.2004
    Beiträge
    159
    dann rechne doch Entfernungsdifferenzen in "x" und "y" - Achse aus, daraus kannste du dann mit primitiv-trigonometrie den winkel errechnen. Dabei ignorierst du zwar, dass die erde eine Kugel ist, aber das ging ja schon früher ein paar Tausend Jahre gut *g*

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

    kannst du mir mal ein Beispiel schicken ?

    Danke Ulli

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.08.2004
    Beiträge
    159
    in unseren Breitengraden entspricht ein Breitengrad ja in etwa 115 Kilometer, Längengrad weiß ich grad nicht, aber kannst ja mit nem Atlas abschätzen.
    dann rechnest du die Differenz der Breitengrade aus und die Differenz der Längengrade und hast denn ein rechtwinkliges Dreieck.
    mit deinen Werten:
    Start 48°15'10''5 / 12°12'11''2
    Ziel 48°15'05''0 / 12°10'00''0
    differenz: 5''5 / 2'11''2
    Dann schätzt du die Länge der Differenz ab und erhältst dann ja kilometerangaben (hier nur als Beispiel eine minute: 1 km)
    => etwa 3/12 km und 2 1/6 km
    es gilt tan = Gegen/ankathete (oder wars andersum?)
    dann erhältst du den winkel zwischen roboter-nordpol und ziel...
    warte einen Moment, ich mals dir kurz auf...

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.08.2004
    Beiträge
    159
    also hier das Bild:
    Ich hab deinen Primärbeitrag nicht so aufmerksam gelesen und ich glaub (vom kurzen Überfliegen), dass das mathematisch schon passt, nur eben dein Programm nciht das macht, was es soll...
    Naja, vlt haben meine Beiträge geholfen *g*
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken position.jpg  

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

    also bin gerade mit den Taschenrechner im Garten unterwegs

    so mach i es ja schon blos was mach i bei differenz 0 Also wenn ich mich genau im Norden / Osten / Süden/Westen befinde????

    Momentan rechne ich das ganze um

    Also (Grad + (minuten/60) + (sec. / 3600) für Pos. und Ziel

    danch ziehe ich das ganze ab :

    difflat = Lat1 - Lat2
    difflon = Lon1 - Lon2

    Winkelformel laut Buch:

    difflon
    ------- sin-1 wenn Wert kleiner 0
    difflat

    difflon
    ------- tan-1 wenn Wert größer 0
    difflat


    Aber da passt was net

    Wie würdest du es in einen Programm schreiben???

    Danke für deine Hilfe

    by Ulli

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.08.2004
    Beiträge
    159
    okok ... hab jetzt mal n bisschen rumgekritzelt und kam zu folgendem Pseudocode:
    Code:
    function winkel(diffx,diffy)
       if (diffy = 0)
          if (diffx > 0) return 90
          else if (diffx < 0) return 270
          else return "was weiß ich" (wir sind schon da)
       winkel = arctan(diffx/diffy)
       if (diffy < 0) winkel = winkel + 180
       winkel = winkel mod 360
       return winkel
    dann sollte man einen schönen winkel aus [0,360] haben, der auch stimmt.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    Hi also entweder is bin zublöd oder...


    function winkel(diffx,diffy)
    if (diffy = 0)
    if (diffx > 0) return 90
    else if (diffx < 0) return 270
    else return "was weiß ich" (wir sind schon da)
    winkel = arctan(diffx/diffy)
    if (diffy < 0) winkel = winkel + 180
    winkel = winkel mod 360
    return winkel

    also so kann ich die Funtion nicht in VB6 verwenden

    if (diffy = 0) ; sagt mir nix
    if (diffx > 0 ) return 90 ; ist diffx > 0 = winkel 90
    else if (diffx < 0) return 270 ; oder ist diffix <0 = winkel 270
    else return ; gib den wert zurück???
    winkel = arctan(diffx/diffy) ; winkel ausrechnen
    if (diffy < 0) winkel = winkel +180 ; ist diffyy <0 dann winkel + 180
    winkel = winkel mod 360; gib den rest zurück + winkel
    return winkel ; gib winkel zurück????


    Versteh ich das richtig?????

    Muss des jetzt mal umbasteln

    Also deins sieht aus wie C++, oder?

    Aber vielen Dank für deine Unterstützung

    By Ulli

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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