Forum: Mikrocontroller und Digitale Elektronik Bresenham mit konstanter Bahngeschwindigkeit ?


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.