Hallo,
Ich habe den Anspruch die Software für den Lasercutter selbst schreiben wollen.
Genau genommen läuft das schon.
Totaler Blödsinn ich weiß, gibt ja alles fertig , aber das war mir einfach zu langweilig.
Bei mir läuft die Steuerung komplett auf einem Arm Controller.
Beim Kreisfahren hatte ich mich durch die diversen Bresenham/Horn Algos gewühlt.
Für einen Oktanten recht einfach und wenn man spiegelt hat man den kompletten Kreis.
Nur hier muß via G-Code an irgendeinem Punkt am Kreis (xs/ys) bis (xe,Ye) gefahren werden.
Daher erschien mir damals die Bresenham Methode schlecht umsetzbar.
Auch weil Rechenleistung für quadrieren und Wurzelziehen auf dem Arm vorhanden ist.
Also die bekannte Formel 0=x^2+y^2-r^2 benutzt.
Natürlich beachte ich die schnelle Richtung für x und y und wechsle entsprechend wenn die Winkelhalbierende überschritten wird.
Die double Variable aus der Wurzel runde ich dann, und fahre dorthin.
Ein fader Nachgeschmack bleibt, ob ich durch das einfache Runden einen Fehler mache ?
Die Horn Methode (hier auf den 1 Oktanten bezogen) X ist hier die schnelle Richtung macht dies:
Einen halben Schritt in X Richtung und
in die Kreisgleichung einsetzen, ist der Funktionwert > 0 dann y++
ansonsten bleibt y unverändert.
Wenn ich das bei mir einbauen will, brauche ich eine Erkennung aller 8 Oktanten. Bisher teile ich den virtuellen Kreis in 4 Teile. (um die schnelle Richtungen zu wechseln)
Macht Arbeit, kann nicht einschätzen ob ich einem Mehrwert habe ?
Hier ein Bild von ersten Test's mit dem bisherigen Algo.
Da war der Laserkopf nocht nicht genau im 90 Grad Winkel über dem Tisch ausgerichtet, was den Eindruck der "Eierkreise" verstärkt.
Grüße Rudi