Wie offset-eine kubische Bézier-Kurve?
Ich versuche zu schaffen, ein "parallel" bezier-Kurve. In meinen versuchen habe ich bekommen, schließen Sie aber keine Zigarre. Ich bin versucht zu halten, eine solid 1px Versatz zwischen den 2 Kurven (rot,blau).
Mein Ziel ist es, verwenden Sie einen Rand offseting algorythm zu erweitern/verkleinern einer svg-Pfad.
Lösung
Für jemand anderes wer auf der Suche nach einer Lösung habe ich erstellen Sie eine AS3-version.
http://seant23.wordpress.com/2010/11/12/offset-bezier-curves/
- Reine Vermutung, ohne dies selbst getan, aber konnte Sie einfach kopieren Sie die Kurve, nachdem es angezeigt wurde als eine Art "Bild", und nur neu zeichnen, es in einer neuen Farbe, an der am günstigsten gelegene offset?
- Es würde nicht halten eine 1px-offset
- wenn Sie eine Kurve zeichnen, von, sagen wir,
0,0 to 2,2 to 0,2
, dann kopieren Sie die Kurve in ein Bild und Neuzeichnen zentriert auf4,4
(statt2,2
), würde das nicht geben, ein 1px-offset? - Nur in einigen Fällen, es hängt von der Komplexität der Kurve. wenn Ihr sprechen eine sehr einfache Kurve mit kleinen Bogen, dann Ihre Methode funktionieren würde. für andere, du, Sie würde es schneiden direkt mit der original Linien. Es hängt alles davon ab, wie hart der Winkel der Kurve hat.
- Scheint diese Frage im Zusammenhang: stackoverflow.com/questions/3205819/bezier-path-widening
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der wikipedia: ( http://en.wikipedia.org/wiki/B%C3%A9zier_curve )
Die Kurve bei einem festen offset von einer bestimmten Bézier-Kurve, die oft als eine offset-Kurve (liegend "parallel" zu der ursprünglichen Kurve, wie der Abstand zwischen den Schienen einer Bahnstrecke), kann man nicht exakt gebildet durch eine Bézier-Kurve (abgesehen von einigen trivialen Fällen). Allerdings gibt es heuristische Methoden, die in der Regel eine angemessene Näherung für praktische Zwecke.
Möglicherweise sehen Sie auch das Papier hier angegeben:
Gliederung der kubischen Bézier-Kurve Schlaganfall
Ist es nicht möglich, im Allgemeinen zu vertreten, den offset einer kubischen Bézier-Kurve als kubische Bezier-Kurve (genauer gesagt, das ist problematisch wenn man Höcker-oder Krümmungsradius in der Nähe der offset-Abstand). Sie können jedoch annähernd der offset für jede Stufe der Genauigkeit.
Versuchen Sie dies:
Habe ich noch nicht implementiert, ein offset (weil der Kernel ich verwenden Sie bereits eine haben), aber das scheint etwas zu versuchen.
Ich hoffe, Sie finden meine Mathe Papier nützlich
Quadratischen bezier-Aufrechnung mit selektiver Unterteilung
http://microbians.com/?page=math
Was Sie Fragen ist genannt parallel-oder offset-Kurve in der Mathematik. Der Wikipedia-Artikel (zitiert über andere), die auf Bezier-Kurven konnte nicht link auf den richtigen Artikel für "offset-Kurve", aber ich habe festgelegt, dass vor ein paar Sekunden. In der Welt von Vektor-Grafiken, dass der gleiche Begriff wird genannt streicheln den Weg.
Im Allgemeinen, für cubic/Bezier-Kurve, dem offset-Kurve ist eine 10th order polynomial! Quelle: Kilgard, p. 28
Wenn alles, was Sie tun möchten ist, Rastern, wie offset-Kurven, anstatt zu berechnen, deren analytische form, Sie können z.B. mit Blick auf die Sourcen von ghostscript. Sie könnten auch einen Blick auf diese Patentanmeldung zu sehen, wie NV_path_rendering tut es.
Wenn Sie möchten, um verdeckte/annähernd der offset-Kurven, dann wird der SCHLEPPER von Papier auf MetaFog für die Deckung von METAFONT, PostScript-Schriftarten eine gute Lektüre. Die METAFONT-system, die älter als PostScript-Schriften erlaubt werden beschrieben durch die (mehr mathematisch Komplex) operation streicheln, aber PostScript-Type-1-Schriften erlauben nur die Füllung verwendet werden (im Gegensatz zu PostScript-Zeichnungen im Allgemeinen) aus Gründen der Geschwindigkeit.
Einen anderen Algorithmus für die Annäherung der offsets als (nur zwei), Beziers (auf jeder Seite), mit code in PostScript, ist in Abschnitt 7 des das Papier von Gernot Hoffmann. (Hat tip an jemanden, der auf der OpenGL-forum für es zu finden.)
Gibt es in der Tat eine Menge solcher algorithmen. Ich fand eine 1997-Umfrage von verschiedenen algorithmen, für die Angleichung der offset-Kurven. Sie annehmen, dass der Stammvater Kurven sind in Béziers oder NURBS.