Funktion auf bezier-kurve abbilden

hallo zusammen,

ich muss ein möglichst exaktes Schnittmuster für eine Kugel erstellen. Die Idee ist, diese aus n Zweiecken zusammen zu nähen (also i.S. von „Apfelsinenschalenschnitzen“). Das Schnittmuster will ich als .svg basteln.
Nach ein bisschen rumrechnen habe ich eine Funktion gefunden, die den Abstand s des Zweieckrandes von der Pol-zu-Pol Symmetrieachse für einen gegebenen Winkel alpha berechnet:

s(alpha) = SIN(alpha)*2*PI()/(anzahl der vielecke)/2

(d.h. ich halbiere ein n-tel des Kreisumfanges des „Breitengrades“)

das funktioniert soweit, jetzt muss ich dass ganze aber als bezier-kurve beschreiben, um es im svg zu verwenden.

Und hier enden meine mathematischen Fähigkeiten. Einzelne Punkte der Kurve kann ich natürlich berechnen, aber ich habe keine Ahnung wie ich davon die Kontrollpunkte ableiten soll, damit die Kurve schön zwischen den Punkten interpoliert wird. Und auch nicht, ob ich kubische oder quadratische Beziers nehmen soll.

Ich nehme mal an, dass sich die Kontrollpunkte irgendwie über die erste Ableitung meiner Funktion ermitteln lassen sollten, aber wie?

Hat jemand von Euch das entsprechende Wissen, dieses meine Problem im Handumdrehen zu lösen?

Vielen Dank,

dennis

Hi dennis,

intuitiv würde ich wie folgt überlegen:
Du musst nur für eine Kante eines Zweiecks die Kontrollpunkte bestimmen, dann kannst du sie durch Rotation um den entsprechenden Winkel auf alle anderen Kanten übertragen.
Bézielurven 3. Grades müssten eigentlich ausreichen, also müssen 4 Kontrollpunkte her. Diese würde ich - wie gesagt intuitiv, ich hab keine Quelle gefunden - aus den Koordinaten eines die Kante umschreibenden Vierecks ableiten. Also im Prinzip wie im Wiki-Artikel (http://de.wikipedia.org/wiki/B%C3%A9zierkurve) Abb 1, nur dass es nicht schief ist. Das sollte dann hoffentlich einen Halbkreis ergeben.
Interessant fand ich auch das hier: http://www.gris.informatik.tu-darmstadt.de/~thokalbe… vllt hilft dir das weiter.
Grüße,
JPL

Hallo JPL,

vielen Dank für Deine Antwort und den spannenden link. Der ist allerdings hauptsächlich geeignet, meinen Respekt vor der Materie zu steigern. SVG kann z.Zt. soweit ich weiss aber keine NURBS oder B-Splines oder irgendwas anderes als Beziers.

Zu Deinem Lösungsvorschlag ist es leider so, dass die genannten funktion beidseits in einem spitzen Winkel ausläuft (im Nulldurchgang). Ein Halbkreis ist also gar nicht hilfreich. das Bezier-Viereck muss stattdessen so „trapezoid“ sein, dass es die Kurve entsprechend anspitzt. Nur wie stark? Und wie kann man das aus der Funktion ermitteln?

Vielleicht hast Du oder jemand anderes noch eine Idee?

dennis

Hi Dennis,

Zu Deinem Lösungsvorschlag ist es leider so, dass die
genannten funktion beidseits in einem spitzen Winkel ausläuft
(im Nulldurchgang). Ein Halbkreis ist also gar nicht
hilfreich.

Eine Kante des Zweiecks ist doch ein halber Großkreis und damit ein Halbkreis. siehe auch den Wiki-Artikel. Oder ich hab dich falsch verstanden und du willst nicht das sphärische Zweieck, sondern das plane Zweieick abbilden? dann hättest du in der Tat Recht, dass der Halbkreis gar nicht hilfreich ist.

das Bezier-Viereck muss stattdessen so „trapezoid“
sein, dass es die Kurve entsprechend anspitzt. Nur wie stark?
Und wie kann man das aus der Funktion ermitteln?

Wenn du so etwas machen willst (http://de.wikipedia.org/w/index.php?title=Datei:Wald…) könnte das über eine Transformation vom sphärischen zum planen Zweieck funktionieren => Kartenprojektionen (http://de.wikipedia.org/wiki/Kartenprojektion)
Was besseres weiß ich auch nicht, sorry.

Viele Grüße,
JPL

hallo JPL,

genau, es geht um die plane abbildung des Zweiecks.

trotzdem vielen Dank!

vg dennis