www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bresenham mit konstanter Bahngeschwindigkeit ?


Autor: Ja mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Vielleicht kann mir hier jemand mit dem Bresenham-Algoritmus 
weiterhelfen.
Es soll erreicht werden, dass die Bahngeschwindigkeit (am Beispiel einer 
Gerade also sqrt(dx^2 + dy^2)) konstant ist, um z.B. einen X/Y-Tisch mit 
einem wählbarem Vorschub zu bewegen. Bewege ich den Tisch nur parallel 
zur x- oder y-Achse, ist das ja kein Problem, pro Schleifendurchlauf 
macht nur genau ein Schrittmotor x Schritte, aber wie implementiert man 
das denn bei anderen Geraden, oder gar bei einem Kreis ?

Schönen Dank schonmal für Hinweise

Ja mann

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau genommen ist die v ja sowieso nicht konstant, da die position ja 
in schritten geändert wird. vielleicht wäre es ja sinnvoll bei einem 
schritt |dx|=|dy|=1 die zeitspanne bis zum anfahren des nächsten 
bahnpunktes um den faktor wurzel2 zu erhöhen.

Autor: Ja mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm, klingt einfach aber gut; also wenn nur 1 Motor schreitet x warten 
zum nächsten Durchlauf, wenn beide schreiten sqrt(2)*x warten.
Apropos, funktioniert Bresenham eigentlich auch im 3 dimensionalen Raum 
?

Ja mann

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ja mann

Ja mann

Fred

Autor: Ja mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, habe meine Implementierung fertig; funktioniert für Geraden im 
3-dimensionalen Raum sehr gut: Im OCR Interrupt wird geschaut welche der 
3 Achsen bewegt werden muss, je nachdem ob eine, zwei oder 3 Achsen 
bewegt werden, wird der nächste Interrupt nach x, sqrt(2) * x oder 
sqrt(3) * x wieder aufgerufen.

Danke für die Idee

Autor: Au mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bis auf die Tatsache das du jetzt 3 Koordinaten hast x,y,z und der 
zurückgelegte Weg sich nach s^2=x^2+y^2+z^2 berechnet :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.