Frage

Ok, also werde ich versuchen, möglichst deskriptiv zu sein.

Ich arbeite an einem Projekt für einen Client, der ein jibjab-Stil Maskierungsmerkmal eines hochgeladenen Bildes erfordert.

Ich möchte in der Lage sein, ein Datenbank-speicherbaren Objekt zu erzeugen, die Anker / Steuerpositionen einer Bezier-Form enthält, so kann ich es später herausziehen und wieder maskiere das Objekt. Das alles ist recht einfach zu tun, außer für einen Haken:. Ich brauche das Bezier-Objekt von einem Benutzer gezeichneten Umrisse erstellen

Bisher ist hier, wie ich den Prozess vorstellen gehen:

auf die Maus nach unten, legen Sie ein neues Sprite, beginFill und moveTo Mausposition.

auf der Maus verschieben, lineTo eine XY-Koordinate.

auf Maus nach oben, endFill.

Das alles funktioniert einfach toll. Ich konnte nur speichert die Informationen hier, aber ich würde voll von Tonnen ziemlich nutzlos x / y-Koordinaten in einem GIGANTIC Objekt suche, und keine Möglichkeit, wirklich Feinabstimmung Änderungen vornehmen außen auf jedem Pixel Griffe setzen. (Ich auch kann dem Benutzer ein Stift-Werkzeug geben ...)

Hier ist, was ich denke, so weit wie Bezier-Kurvenberechnung geht:

1: Finde heraus, wenn ich eine neue Kurve beginnen muß, und auf diesem Intervall die xy des Pixels zu verfolgen. Ich stelle mir vor, dieses ist nur eine Pixelzahl, vielleicht erhöht gerade eine Zählvariable pro Maus bewegen und eine neue Pixel alle x machen. Die Frage ist hier einige Kurven ungenau sein würden, und andere unnötig, aber ich brauche wirklich nur einen allgemeinen Bereich, nicht eine genaue Darstellung, so dass es funktionieren könnte. Ich wäre glücklicher mit etwas ein wenig schlauer though.

2: Nehmen Sie jede neue x / y, speichern Sie es als ein Anker, und herausfinden, wo eine Kontrolle geraten würde die Kurve zwischen diesem und dem letzten Anker zu machen. das ist, wo ich wirklich bekommen aufgehängt. Ich bin sicher, dass jemand hat dies in Flash gemacht, aber keine Menge googeln kann scheint mir die Art und Weise zu helfen, dies zu erledigen. Ich habe eine Menge Skizzen gemacht und was wenig Mathematik ich um mein Gehirn wickeln kann, kann aber nicht eine Möglichkeit der Umwandlung von Pixeln zu beziers scheint, um herauszufinden.

Ist das möglich? Alles, was ich wirklich brauchen etwas, das nahe an der gleichen Form erhalten wird. Ich denke darüber nach vielleicht nur Platzierung Anker, wenn der Winkel des nächsten Pixels über 180 Grad in Bezug auf die aktuelle Zeile oder etwas ist, und gerade den Rand des Bogens zwischen diesen Veränderungen greifen, aber egal, wie hart ich versuche, mich kann nicht scheinen, um herauszufinden, wie diese Funktion zu erhalten!

Danke für Ihre Hilfe, ich werde sicher meine Fortschritte posten hier, wie ich gehe, ich denke, das in vielen Anwendungen wirklich nützlich sein könnte, solange es tatsächlich machbar ist ...

Jesse

War es hilfreich?

Lösung 3

Danke für die Antworten, obwohl ich mich wahrscheinlich erraten sollte über die Anwendung spezifischer sein, bin ich wirklich nur einen Entwurf für eine Maske benötigen, so Bilder in Vektoren oder Polygone konvertieren, obwohl, wie cool das ist, nicht wirklich mein Problem beheben. Der lineare Algorithmus der kleinsten Quadrate ist mega cool, ich denke, das näher sein könnte, was ich suche.

Ich habe eine grundlegende Abhilfe jetzt gehen, ich bin nur das Zählen der Maus bewegt, dann jedes X (mit ihm spielen wünschenswerteste Kurve zu bekommen) bewegt, packe ich die xy-Position. dann, ich jedes anderen gespeicherten xy nehmen und es in einen Anker drehen, werden die restlichen xys in Kontrollen eingeschaltet. Dies ist etwas wünschenswerte Ergebnisse produziert, hat aber einige kleinere Probleme, dass die Geschwindigkeit, mit der die Maske Effekte, die Anzahl der Griffe gezogen wird, und es ist wirklich nur eine allgemeine Umgebung bekommen, nicht eine genaue Passform. Interessanterweise scheinen Anwender für präzisere Formen langsamer zu ziehen, so dass diese Lösung funktioniert viel besser, als ich mir vorgestellt hatte, aber es ist nicht so schön wie es sein könnte. Dies wird für die Kunden arbeiten, so dass, obwohl es kein Grund ist es weiter zu verfolgen, ich neue Dinge mag lernen, und einige von der Uhr Zeit mit der Suche in einem linearen dest Gleichungen und zu sehen, verbringen, wenn ich eine Klasse zusammentrommeln kann, die diese Berechnungen tun für mich. Wenn jemand über einige AS3-Code für diese Art der Sache läuft, oder würden einige von mir mögen, lassen Sie mich wissen, ist dies ein interessantes Puzzle.

Andere Tipps

Es klingt wie eine Menge Arbeit Pixel in Bezier-Kurven zu drehen. Sie könnten versuchen, so etwas wie der Linear Least-Squares-Algorithmus. http://en.wikipedia.org/wiki/Linear_least_squares

Ein anderer Takt, könnten Sie haben Ihre Benutzer Vektorgrafiken stattdessen ziehen? Auf diese Weise kann man einfach die Formen in der Datenbank speichern.

Eine weitere coole Methode des Raster-Vektor Konvertierung so etwas wie dieses iterative Programm wäre: http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/

Viel Glück

In meiner Antwort href="https://stackoverflow.com/questions/891643/twitter-image-encoding-challenge"> diese Frage ich mit diskutieren autotrace Bitmaps beziers zu konvertieren. Ich empfehle, indem Sie Ihre Benutzer auf dem Server durch dieses Programm zu ziehen. Autotrace hat einen fantastischen Job des Aufspürens und vereinfacht so gibt es keine Notwendigkeit, das Rad hier, um zu versuchen ist und neu zu erfinden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top