Kurvenberechnung & Ellipse

Neue Frage »

Gironymo Auf diesen Beitrag antworten »
Kurvenberechnung & Ellipse
Hallo alle zusammen,

also, eins muss ich gleich mal vorweg sagen: ich bin KEIN Mathematiker, also redet bitte mit mir so, dass ich es auch verstehe verwirrt

So, zu meinem Problem:
Ich soll für eine Maschine (eine Art Portalplotter) eine Software für die Bewegung der einzelnen Achsen Programmieren. Im Großen und Ganzen ist das alles ja auch kein Problem, nur zwei Sachen machen mir Kopfzerbrechen ... ich grüble jetzt mittlerweile seit fast zwei Wochen, aber irgendwie komm ich nicht weiter (bin ich zu dämlich?)

1. Es geht um die Berechnung einer Bezierkurve
Damit ich die Maschine richttig bewegen kann, muss ich die einzelnen Punkte der Kurve berechnen (X und Y Koordinaten). Die Berechnung des Beziers (mit vier Punkten) hab ich hinbekommen (besser gesagt, ich hab eine Formel gefunden, die auch ich lesen kann ...).
Den Bezier berechne ich mit folgender Formel:
myX = X1 * (1 - u) ^ 3 + X2 * 3 * (1 - u) ^ 2 * u + X3 * 3 * (1 - u) * u ^ 2 + X4 * u ^ 3 --> wobei u von 0 bis 1 geht

Das gleiche auch mit Y ...
Bei einer Kurve hab ich aber jetzt das Problem, dass ja der dritte Punkt des ersten Beziers gleichzeitig der erste Punkt des zweiten Beziers, der dritte Punkt des zweiten Beziers (also insgesamt der fünfte Punkt) der erste Punkt des dritten Bezeirs ist ... usw ... Die einzelnen Beziers fangen ja nicht an deren ersten Punkt an (mit Ausnahme des ersten Beziers) und enden auch nicht am vierten Punkt (außer der letzte Bezier). Ich hoffe, ich hab das so weit mal richtig verstanden ...
So, vielleicht kann mir jetzt von euch jemand eine Formel sagen (die auch ich verstehe) mit der ich die Koordinaten einer Kurve mit beliebig vielen Punkten berechnen kann? Die Formel auf Wikipedia kann ich leider nicht lesen ...

2. Ellipse
Das gleiche Problem hab ich jetzt auch noch beim "Zeichnen" einer Ellipse, vielleicht kann mir auch da jemand weiterhelfen.

Schon mal besten Dank

Markus
frank09 Auf diesen Beitrag antworten »

Möchtest du kubische Beziers, also mit 4 Kontrollpunkten, aneinanderreihen, dann müssten ja Anfangs- und Endpunkt übereinstimmen?
Gironymo Auf diesen Beitrag antworten »

Nein, ich möchte Sie nicht einfach aneinander reihen. Das ist klar, dass dann der Startpunkt gleich dem Endpunkt ist.

Hier ist mal ein Beispiel wie es dann mal aussehen soll:

http://www.fh-friedberg.de/users/jingo/m...ier/bezier.html

Es kann natürlich auch sein, dass ich mit meiner Beschreibung am Holzweg bin und das Ganze komplett anders berechnet wird ...
frank09 Auf diesen Beitrag antworten »

Mit diesem Applet kann man eine Bezierkurve mit beliebig vielen Kontrollpunkten zeichnen. Jedesmal, wenn man einen weitern Punkt zufügt, wird dieser zum neuen Endpunkt, der Anfangspunkt bleibt gleich und alle übrigen Punkte bleiben Kontrollpunkte, die aber nicht auf der Kurve liegen.
Das wäre die Formel für 5 KPunkte:

myX = X1 * (1 - u) ^ 4 + X2 * 4 * (1 - u) ^ 3 * u + X3 * 6 * (1 - u)^2 * u ^ 2 +X4 * 4 * (1 - u) * u ^3+ X5 * u ^ 4 .
herleitung ähnelt binomischen Formeln z.B.(a+b)^4
Gironymo Auf diesen Beitrag antworten »

hallo frank,

zuerst mal danke für deine antwort.
ja, ich denke, es sollte eine einzige bezier-kurve sein, aber mit beliebig vielen k-punkten.

wenn ich mir deine formel so ansehe, dann verstehe ich sie ... fast ...

ich hab sie jetzt mal aufgegliedert, damit sie 1. für mich verstädnlich ist und ich sie 2. im programm verwenden kann

myX = X1 * (1 - u) ^ 4
myX = myX + X2 * 4 * (1 - u) ^ 3 * u
myX = myX + X3 * 6 * (1 - u) ^ 2 * u ^ 2
myX = myX + X4 * 4 * (1 - u) * u ^ 3
myX = myX + X5 * u ^ 4

ok, so wie so gut, aber das mit dem "herleitung ähnelt der binomischen formel ..." ist mir noch nicht ganz klar. so ungefähr kann ich mich an die formel schon noch erinnern, aber eben nicht genau ...

gehen wir mal davon aus, ich hab n k-punkte. dann wäre die formel:

myX = X1 * (1 - u) ^ (n - 1)

myX = myX + X2 * ? * (1 - u) ^ (n - 2) * u
myX = myX + X3 * ? * (1 - u) ^ (n - 3) * u ^ 2
myX = myX + X4 * ? * (1 - u) ^ (n - 4) * u ^ 3
myX = myX + X5 * ? * (1 - u) ^ (n - 5) * u ^ 4
...

myX = myX + Xn * u ^ (n - 1)

hab ich das so weit richtig verstanden?
wenn ja, gibts da noch eben diese kleinigkeit, die mir probleme bereitet ... in der formel als "?" dargestellt.

mein genaues problem ist folgendes: ich muss die punkte im programm in einer schleife durchlaufen, da ich nicht weiß, wie viele punkte angegeben sind. vielleicht hilft mein source-code:

For u As Single = 0 To 1 Step 0.0125
myX = Points(0).X * (1 - u) ^ (Points.Count - 1)
myY = Points(0).Y * (1 - u) ^ (Points.Count - 1)

For i As Integer = 1 To Points.Count - 2
myX = myX + Points(i).X * ? * (1 - u) ^ (Points.Count - (i + 1)) * u ^ i
myY = myY + Points(i).Y * ? * (1 - u) ^ (Points.Count - (i + 1)) * u ^ i
Next

myX = myX + Points(Points.Count - 1).X * u ^ (Points.Count - 1)
myY = myY + Points(Points.Count - 1).Y * u ^ (Points.Count - 1)

myList.Add(New System.Drawing.PointF(myX, myY))
Next
frank09 Auf diesen Beitrag antworten »

bei den gesuchten Zahlen handelt es sich um Binomialkoeffizienten,
hier kurze Definition und Berechnung
http://www.arstechnica.de/computer/JavaS...oeffizient.html

für ein bezier 3.Grades sind das:





für 4. Grad:





obere Zahl entspricht Grad n, untere läuft von 0 bis n.

Zur Ellipse: sei Mittelpunkt , waagerechter Radius , senkrechter , dann gilt

myX=
myY=
 
 
Gironymo Auf diesen Beitrag antworten »

hallo frank,

nochmal danke, ich denke, ich hab die formel jetzt verstanden ... is ja auch kein wunder, bei der erklärung Freude

die form sieht auch schon annähernd so aus wie sie soll ... aber eben nur annähernd, das ist das problem. ich hab mal zwei bilder angehängt, das mit dem schwarzen hintergrund ist das orginal, das andere is meines mit deiner formel (es ist stark vergrößert ...)
irgendwie sieht es aus als hätten die einzelnen punkte zu wenig "anziehungskraft" ...
Gironymo Auf diesen Beitrag antworten »

also, das mit der ellipse hätt ich auch selbst hinkriegen können ... so schwer wäre das nicht gewesen, noch dazu kennen wir das ja vom kreis, oder? verwirrt

das mit der kurve hat siche jetzt auch erledigt. die formel stimmt schon so, aber ich hab die daten falsch erhalten. mit den richtigen k-punkten kommt auch das richtige raus.

danke nochaml
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »