Efficace Ligne De Lissage (Simplifier)
Je suis entrain de créer une Application de Peinture en Actionscript (bien que ma question n'est pas d'Actionscript). L'idée de base est de commencer à peindre lorsque la souris est enfoncé et le suivi des mouvements de la souris. Ce que je veux acchieve est:
- réduire la souris "bruit" et
- créer plus de la douceur des lignes.
Droit maintenant, (1) est problématique, parce que je reçois des milliers de mouvements de la souris à l'intérieur de quelques secondes. En raison (1) de la ligne peut regarder surprenant.
Quelle idée courante: lorsque l'utilisateur termine le dessin de la ligne, je stocke tous les mouvements dans un Tableau et de les réduire (médiane seuil) et ensuite utiliser une spline algorithme de recréer une ligne.
Mieux approches?
OriginalL'auteur justin | 2011-04-29
Vous devez vous connecter pour publier un commentaire.
Voir Efficace Ajustement De La Courbe par Sarah Frisken. Également disponible à la page de l'auteur.
le premier lien que vous fournissez semble être rompu. tout autre lien?
voir dx.doi.org/10.1080/2151237X.2008.10129260 et sarahfrisken.com/efficientCurveFitting.pdf.
excellent, merci!
j'ai quelques difficultés à comprendre les parties à propos de l'vecteur de distance des champs, auriez-vous par hasard pour savoir si il y a une mise en œuvre de ce code pour l'affichage de quelque part?
OriginalL'auteur lhf
(heurtée à votre question lors de la recherche de même, et s'est mis ensemble, quelque chose de notre propre)
http://willowsystems.github.com/jSignature/#/about/linesmoothing/
(SEO-compatible lien de même:
http://willowsystems.github.com/jSignature/%2523%252Fabout%252Flinesmoothing%252F.html)
Le problème que vous décrivez est deux fois.
1. Vous voulez "simplifier" la capture de données.
2. Vous voulez dessiner une jolie ligne ('ajustement d'une courbe") dans les points.
Simplify.js cité ci-dessus est en effet bien, mais il ne vous donne des points. Pour jSignature nous voulions un super-efficace, non à la traîne de la courbe d'ajustement de l'algorithme.
Voir le lien ci-dessus pour une explication de l'une (notre) approche de la ferrure de courbes de Bézier (aka 'cube') courbes entre les points. Il vous permet de garder la ligne de l'utilisateur drew et juste gal sur la façon de connecter les 2 dernières coordonnées, ou vous pouvez simplifier et de redessiner l'ensemble de la ligne comme ça.
(Notre publication de l'algorithme a été intentionnelle, comme pour établir l'état de la technique" et s'opposent à petentability de la méthode combinée. Ce qui signifie, nous n'avons pas mis notre propre brevet joug de l'algorithme et, péniblement et ne pas trouver il être brevetés ailleurs. Bien sûr, il peut y avoir quelques "patent troll" qui peut trouver un problème avec vous la mise en œuvre de la méthode, mais, au moins, pas nous. Donc, profitez.)
Le lien de démonstration est à l'aide de 4 pixels de sauter sur le mouvement de la souris. C'est brut, mais OK pour le temps-réel "simplification" des données. Si vous avez le luxe de la capture de l'ensemble de la course et de le restituer tous les, certainement, l'utilisation simplify.js.
OriginalL'auteur ddotsenko
Mike Bostock a quelques bons exemples ici Ligne De Simplification. Il souligne que la Douglas-Peucker algorithme est bien connu. Cependant Visvalingam semble être plus efficace.
OriginalL'auteur BozoJoe