nelson1234 Geschrieben 13. November 2009 Teilen Geschrieben 13. November 2009 (bearbeitet) Hallo Leute, ich hoffe ihr könnt mir helfen. Mir als Masch.-Bauer fehlt anscheinend das Informatik-Verständnis für solche sachen. Folgendes Problem: Ich habe einen Kreis mit 13 gleich geteilten Positionen. Die Nummerierung der Positionen ist leider nicht aufsteigend, sondern wie folgt. 1,8,2,9,3,10,4,11,5,12,6,13,7. Dann wieder vorne beginnend. Nun suche ich einen Algorithmus, der mir abhängig von der aktuellen Position und der anzufahrenden Position die Schritte (1 Schritt entspricht von einer zur unmittelbar nächsten Position) berechnet. Das in beide Richtungen um den kürzeren Weg zu bestimmen. Also um von bspw Pos 1 auf 2 oder von 2 auf 3 ist es ka klar. Immer 2 Schritte im UZS drehen. Will ich aber von bspw Pos 13 auf Pos 2 drehen, soll der Algorithmus mir die Schrittdifferenz bestimmen und den Kreis auf dem kürzeren Wege an die gewünschte Position fahren. Die Kommunikation für die Steuerung ist kein Problem, sondern die Berechnung der Schritte. Mit ner Zahlenfolge klappts halt nicht, da mathematisch ja nach der 7 die 14 kommen würde. Ich hoffe Ihr habt eine Lösung für mich. Gruss nelson1234 Bearbeitet 13. November 2009 von nelson1234 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 13. November 2009 Teilen Geschrieben 13. November 2009 Ist die Anordnung der Proben immer gleich oder ist sie willkürlich? Eine Möglichkeit, die auch bei willkürlichen Anordnungen funktioniert: Die Anordnung in einem Ringpuffer ablegen und in beide Richtungen suchen. Dabei die Schritte zählen. Wenn zur Laufzeit nicht gesucht werden soll und die Anzahl der Proben nicht zu groß ist, könnte man auch alle Kombinationsmöglichkeiten vorab in einer Tabelle ablegen und zur Laufzeit darin nachsehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nelson1234 Geschrieben 13. November 2009 Autor Teilen Geschrieben 13. November 2009 Also die Anordnung der Positionen ist fix. Der Kreis dreht sich halt und die Positionen mit, aber immer in der Reihenfolge angeordnet. Dann werde ich jetzt mal nach Ringpuffern googeln,da ich leider keine Ahnung hab wie ich das Porgrammieren soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 13. November 2009 Teilen Geschrieben 13. November 2009 Um welche Programmiersprache geht es denn? Einen Ringpuffer realisiert man mit einem Array, nur dass beim Überschreiten der unteren bzw. oberen Grenze an das jeweils andere Ende gesprungen wird. Der Modulo-Operator (Divisionsrest) ist hierbei hilfreich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nelson1234 Geschrieben 13. November 2009 Autor Teilen Geschrieben 13. November 2009 Das ganze soll in Basic geschrieben werden. Also wenn ich das richtig verstanden habe, lege ich ein Array an: ARRAY position(13) OF BYTE (12 oder 13?? beginnt mit 0 oder mit 1??) Dann mit einer Laufvariablen und geeigneter Formel die Positionen in das Array schreiben. Hoffe das stimmt so. Aber wie zähl ich dann in beide Richtungen? Mit i=1 to 13 und i=13 to 1 ???? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 13. November 2009 Teilen Geschrieben 13. November 2009 Wenn die Anordnung immer die oben angegebene ist, dann kann man es auch ohne Suchen bestimmen. Die Positionen werden von 0 bis 12 Durchnummeriert. Probe 1 liegt dann auf Position 0, Probe 8 auf 1, usw. Die Prosition jeder Probe ergibt sich bei der oberen Anordnung aus pos(n)=(2*n - 2) mod 13. Der Abstand (entspricht der Schrittzahl) beträgt pos(Ziel)-pos(Start). Ist der Betrag vom Abstand größer als 7, dann ist es günstiger in die andere Richtung zu laufen. Also entsprechend der bisherigen Richtung 14 addieren (bei bisher negativer Schrittzahl) oder subtrahieren (bei bisher positiver Schrittzahl), alternativ mod 6 rechnen. Eigentlich doch gar nicht so schwer, darauf zu kommen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nelson1234 Geschrieben 13. November 2009 Autor Teilen Geschrieben 13. November 2009 Ich denke ich habs verstanden. Du hast meinen Freitag abend gerettet, sollte es klappen. Wenn nicht, liegts glaub ich nicht an dir hast ja recht, eigentlch nicht so schwer, aber wenn man sich den ganzen tag mit Konstruktionen beschäftigt, dann bleibt sowas halt auf der Strecke. Also erstmal vielen Dank. Falls sich noch Fragen auftun sollten, scheue ich moch nicht zu fragen Gruss nelson1234 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.