Ok, donc je vais essayer d'être aussi descriptif que possible.Conversion de pixels en courbes de Bézier dans Actionscript 3
Je travaille sur un projet pour un client qui nécessite une fonction de masquage de type jibjab d'une image téléchargée. J'aimerais pouvoir générer un objet stockable dans une base de données qui contient des positions d'ancrage/contrôle d'une forme bezier, de sorte que je puisse le retirer plus tard et masquer à nouveau l'objet. Tout cela est assez facile à faire, sauf pour une capture: j'ai besoin de créer l'objet bezier à partir d'un contour dessiné par l'utilisateur.
Jusqu'à présent, voici comment j'imagine que le processus en cours:
sur la souris vers le bas, créer un nouveau sprite, beginFill, et la position de la souris moveTo.
au déplacement de la souris, ligne à une coordonnée XY.
à la souris, endFill.
Tout cela fonctionne tout simplement génial. Je pourrais juste stocker l'information ici, mais je regarderais un objet GIGANTIC plein de tonnes de jolies coordonnées x/y inutiles, et aucun moyen de vraiment faire des changements de mise au point en dehors de mettre des poignées sur chaque pixel. (Je peux aussi bien donner à l'utilisateur final un outil de crayon ...)
Voici ce que je pense en ce que le calcul de la courbe de Bézier GOES:
1: la figure quand je dois commencer une nouvelle courbe et suivez le xy du pixel sur cet intervalle. J'imagine que ce n'est qu'un nombre de pixels, peut-être simplement incrémenter une variable de comptage par mouvement de souris et en faire une nouvelle tous les x pixels. Le problème ici est que certaines courbes seraient inexactes, et d'autres inutiles, mais j'ai vraiment besoin d'une zone générale, pas d'une représentation exacte, donc ça pourrait marcher. Je serais plus heureux avec quelque chose d'un peu plus intelligent. 2: prenez chaque nouveau x/y, stockez-le comme une ancre, et déterminez où un contrôle irait faire la courbe entre cette dernière et la dernière ancre. C'est là que je me suis vraiment accroché. Je suis sûr que quelqu'un l'a fait en flash, mais aucune quantité de googling ne semble pouvoir m'aider avec la façon de le faire. J'ai fait beaucoup de croquis et les quelques maths que je peux enrouler autour de mon cerveau, mais je n'arrive pas à trouver un moyen de convertir les pixels en beziers.
Est-ce possible? Tout ce dont j'ai vraiment besoin, c'est quelque chose qui se rapproche de la même forme. Je pense à placer seulement des ancres quand l'angle du pixel suivant est au-delà de 180 degrés par rapport à la ligne courante ou quelque chose, et juste saisir le bord de l'arc entre ces changements, mais peu importe comment j'essaye, je n'arrive pas à comprendre comment faire fonctionner ça!
Merci pour votre aide, je serai sûr de poster mes progrès ici que je vais, je pense que cela pourrait être très utile dans de nombreuses applications, aussi longtemps qu'il est en fait possible ...
Jesse