PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kreisinterpolation auf Integerbasis



Ruppi
19.12.2005, 08:38
Hallo,
kennt jemand einen schnellen Algorithmus einer Kreisinterpolation? Ich benötige das für eine Schrittmotorsteuerung, es muss also auf einem Mikrocontrolller implementierbar sein.

Ruppi

SprinterSB
19.12.2005, 10:47
-1-
Eine Sinustabelle vorhalten

-2-
wenn du in (x,y) bist und im unteren Teil des ersten Quadranten,
dann gehst du bei einem Schritt nach links mindestens einen nach oben (Folgen der Kreislinie gegen den Uhrzeigersinn).
Du testest also, ob x^2+y^2 >= r^2 ist. Falls ja, gehst du eins nach links (x=x-1) ansonsten eins nach oben (y=y+1) und hangelst dich so an der Kreislinie entlang. Das geht bis zu 1/8 der Kreises; den Kreis musst du also in 8 Teilstücke teilen.

Das zweite Verfahren bewegt sich nicht mit konstanter (Winkel)geschwindigkeit auf der Kreisbahn. Ich vermute mal, das ist nicht ganz egal?

DerInder
19.12.2005, 10:55
Moin Moin,
einfach den Bresenham-Algorithmus siehe hier: http://de.wikipedia.org/wiki/Bresenham-Algorithmus

20.12.2005, 08:48
Moin zusammen,
eine Sinustabelle vorzuberechnen, hatte ich auch erst angedacht. Die Bresenham Variante ist mir zwar geläufig, jedoch hat man immer das Problem, dass man die restlichen Oktanten spiegeln muss. Das ist schlecht, wenn man beispielsweise einen Bogen fahren möchte.
Da das ganze in einer Timerroutine steht und sich die Maschine nur sozusagen "pixelweise" bewegt, bekomme ich mit nicht konstanten Winkelgeschwindigkeiten keine Probleme.
Schön wäre ein einfacher Algorithmus, der auch für das Abfahren von Bögen geeignet wäre.
Trotzdem aber erstmal vielen Dank für Eure Hilfe!

Gruß, Ruppi