Forum: Mikrocontroller und Digitale Elektronik Bresenham mit konstanter Bahngeschwindigkeit ?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ja mann (Gast)


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
von Frank S. (Firma: HSCS) (linuxerr)


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.
von Ja mann (Gast)


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
von Fred (Gast)


Lesenswert?

@Ja mann

Ja mann

Fred
von Ja mann (Gast)


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
von Au mann (Gast)


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 :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.