2008-09-03 3 views
5

Ich bin Datenerfassung von einem Tablett mit Java (JPen Bibliothek Felsen) und möchte in der Lage sein, einen Kugelschreiber auf eine natürlichere Weise zu malen.Wie kann ich eine Kurve zeichnen, die in ihrer Dicke variiert?

Momentan zeichne ich den Stiftstrich als gerade Liniensegmente mit jeweils unterschiedlicher Strichstärke.

Es muss etwas in der Grafikbibliothek von Java sein, das mich dazu bringt, effizienter zu arbeiten.

Richtig?

Antwort

0

PostScript-RIPs konvertieren häufig Kreise in Kurven und Kurven in eine Reihe von geraden Liniensegmenten. Die Anzahl der Segmente hängt von der Einstellung der Ebenheit ab, die standardmäßig für die Auflösung der Rasteranzeige geeignet ist.

Eine dicke Linie oder dicke Liniensegmente können in ein dünn gefülltes Polygon umgewandelt werden.

1

Ich habe das noch nie gemacht, aber hier sind ein paar Dinge, die Sie versuchen könnten. Erstens könnten Sie eine benutzerdefinierte Stroke implementieren, die dünne Trapezoids erstellt. Die Breite der Endkappen wäre eine Funktion des Drucks an den Endpunkten. Wenn das funktioniert, können Sie versuchen, die Liniensegmente natürlicher aussehen zu lassen, indem Sie Bezier curves verwenden, um "kurvige Trapeze" zu bilden. Sie können möglicherweise QuadCurve2D verwenden, um zu helfen.

1

Es gibt mindestens eine allgemeinere Lösung. Das Feature wurde Inkscape basierend auf einem recent algorithm hinzugefügt. Sie können sehen, dass es direkt auf Ihr Problem in some screenshots angewendet wird. Es kann einen beliebigen Formpinsel entlang des Pfades extrudieren, um beispielsweise einen Pinsel nachzuahmen, aber Sie müssten ihn aus dem Algorithmus in der ersten Verknüpfung oder aus den Inkscape-Quellen nach Java portieren. Es ist auch durch Patente abgedeckt, so dass Sie Ihren Code unter der GPL veröffentlichen müssen (der Autor gibt ausdrückliche Erlaubnis) oder eine Patentlizenz kaufen.

Verwandte Themen