Kreisapproximation in Visual Basic realisieren

Guten Tag,

ich schreibe gerade an einer Ansteuerung für eine Schrittmotorkarte und bräuchte ein Beispiel für eine Kreisapproximation (Kreis in kleine Geraden umwandeln), mit einstellbaren Approximationslängen.

Das ganze sollte so aussehen:

Vorgaben: Startpunkt X/Y - Ziel X/Y - Radius

Dann sollte die Software den Weg von Punkt1 bis Punkt2 als kleine Geraden ausgeben und zwar immer mit Startpunkt - Endpunkt und zwar solange bis man am Ziel ist. Die kleinen Geraden sollten dabei in ihrer Länge einstellbar sein.

In QB hatte ich sowas mal realisiert, leider bekomme ich es in VB nicht mehr hin und hab auch das alte Beispiel nicht mehr.

Ich wäre über jede Hilfe, evtl sogar ein Beispiel dankbar!

Gruß Mario

Hallo Mario,

ich schreibe gerade an einer Ansteuerung für eine
Schrittmotorkarte und bräuchte ein Beispiel für eine
Kreisapproximation (Kreis in kleine Geraden umwandeln), mit
einstellbaren Approximationslängen.

K.A. was Approximation ist.
Ich weiß daß man durch ein inneres Vieleck und ein äußeres Vieleck, um/in einem Kreis, sich dann an PI annähern kann, durch Erhöhung der Eckenanzahl.

Insofern kann man auch einen Kreis durch ein Vieleck darstellen was sehr viele Ecken hat.
Um das zu tun, braucht man m.E. nur die x/y-Werte des Mittelpunktes des Kreises und den Radius und die Eckenanzahl.
Als Berechnungsergebnis erhält man dann die x/y-Anfangs- und x/y-Endwerte jeder Geraden des Vielecks.

Von daher kann ich mit

Vorgaben: Startpunkt X/Y - Ziel X/Y - Radius

nix anfangen.

Gruß
Reinhard

Hallo,

erstmal Danke für die Antwort. Das ist soweit schon nah drann. Aber was ich jetzt bräuchte wäre die Formel fürs Berechnen von „Quadratecke inneres Quadrat“ zu „Quadratecke äusseres Quadrat“ also eine Linie zwischen den beiden. Und dann muss das ganze durch eine Anzahl von X Quadraten ja immer etwas im Winkel weitergedreht werden um sich Pi anzunähern.

Also in soweit sind Sie schon nah drann „:wink: wie passend“

Also angenommen ich stehe mit meinem Bleistift auf dem inneren Quadrat des Kreises an einer Ecke - und das ganze in einem Koordinatensystem von X/Y - wie ist die Formel um zum nächsten Eckpunkt (Quadrat aussen um den Kreis) zu kommen wenn die Ecken nicht weiter als sagen wir 0,01mm auseinander sein sollten?

Die Werte die ich bräuchte wären dann z.B. X-0,005 / Y-0,002 dann X-0,004 / Y-0,003 weiss jemand was ich meine?! Hilffffeee :wink:

Gruß Mario

Moin, Mario,

besorg Dir die Koordinaten mit Sinus-/Cosinus-Funktion.

Vorgaben: StartNullpunkt X/Y - Ziel X/Y - Radius r - Anzahl Ecken n

 For i = 0 to n
 y(i) = r\*sin(π \* i / n)
 x(i) = r\*cos(π \* i / n)
 next i

Gruß Ralf

Nullpunkt vergessen
Hi Mario,

mit dem Nullpunkt x0, y0 wird’s komplett:

 For i = 0 to n
 y(i) = r\*sin(π \* i / n) + y<sub>0</sub>
 x(i) = r\*cos(π \* i / n) + x<sub>0</sub>
 next i

Gruß Ralf

1 Like

Hallo,

und Xo Yo steht dann für den aktuellen Standpunkt? Dann gibt es ja noch das Problem ein Kreis hat ja 4 Richtungen. Einmal bei 0 Grad angefangen in X-/Y+ dann X-/Y- dann X+/Y- und letztendlich X+/Y+ das müsste ja auch noch mit rein. Und die Sache wenn ich dann mal Gegenlauf oder Gleichlauf fahre.

Vielleicht findet sich ja jemand der soetwas schon relalisiert hat.

Das ganze hatte ich irgendwie über eine „Winkelerkennung“ realisiert. Ich steh total auf dem Schlauch. Hatte mir damals die einzelnen Codeschnipsel zurechtgesucht…

Aber soweit sag ich mal Danke für Eure Hilfe!
Immerhin bin ich jetzt schon etwas weiter.

Gruß

Moin, Mario,

und Xo Yo steht dann für den aktuellen Standpunkt?

das sind die Koordinaten des Kreismittelpunktes.

ein Kreis hat ja 4 Richtungen.

Der Kreis hat gar nichts1. Was Du meinst, ist vielleicht das Koordinatensystem.

wenn ich dann mal Gegenlauf oder Gleichlauf fahre.

Langsam wird’s rätselhaft. Wenn der Kreis gezeichnet ist, sieht ihm doch keiner an, ob der Pen linksrum oder rechtsrum gefahren ist.

Wenn das Zeichnen sichtbar sein soll, muss in die Schleife eine Verzögerung eingebaut werden. Im Codebeispiel läuft der Pen gegen die Uhr; wenn er andersrum rennen soll, dann lass die Schleife rückwärts laufen.

Das ganze hatte ich irgendwie über eine „Winkelerkennung“
realisiert. Ich steh total auf dem Schlauch. Hatte mir damals
die einzelnen Codeschnipsel zurechtgesucht…

Vergiss es - im alten Mist zu kramen fördert nur Unrat zutage.

Gruß Ralf

1Das erinnert mich an den alten Mathematikerwitz „Kommt ein Ball um die Ecke. Plautz, fällt er um.“