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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.