NbrPts Bezier

Résolu
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 2 nov. 2006 à 22:44
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 4 nov. 2006 à 14:27
Bonjour. Ma question s'adresse a un membre balèze en maths et particulièrement en géométrie.
J'aimerais, pour une raison précise, faire une fonction qui retourne tous les points d'une courbe de Bezier. J'ai bien l'équation qui dessine la courbe, mais via des points compris entre 0 et 1 (nombres réels donc) et c'est à nous de donner le nombre de points à lui faire faire (via une boucle donc). Or, moi, j'aimerais connaître la longueur, en pixels entiers, de la courbe. Du moins, c'est ce que je cherche à faire. Mais pour ça, il me manque la longueur vectorielle (en nombres réels) de cette courbe .

Si j'avais la réponse, promis, je vous ferais la plus belle source du monde

Merchi par avance

6 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
3 nov. 2006 à 10:09
salut,

sur le principe de la méthode des trapèzes : tu subdivises [0;1] en N morceau égaux...ensuite tu calcules les N+1 coordonnées de chaque point de ta subdivision (0, 1/N, 2/N...(N-1)/N,1)...et ensuite, longueur = somme(0,N-1,sqrt((x(n)-x(n+1))^2+(y(n)-y(n-1))^2)...donc approximation...plus N grand plus précision...

sinon : http://steve.hollasch.net/cgindex/curves/cbezarclen.html

ShareVB
3
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
3 nov. 2006 à 18:41
salut,

personnellement, je dirais qua la résolution est 1/sqrt((x-x')^2+(y-y')^2) où (x,y) et (x',y') sont les coordonnées en pixels du début et de la fin de la courbe...en effet si on place cette distance à l'horizontale, on revient à tracer une courbe f(x) avec un pas en pixel...

cependant je ne suis pas sur que les méthodes de tracé s'en occupe réellement...

sinon :
http://www.codeguru.com/vb/gen/vb_graphics/article.php/c2377/
http://www.codetoad.com/vb_bezier.asp

ShareVB
3
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
3 nov. 2006 à 16:16
Merci  beaucoup pour ces quelques explications... Mais alors, maintenant, ma question est : quelle est la précision "du pixel" comment l'obtenir ???

- En fait, là, en l'état, pour récupérer les coordonnées de chaque pixel contigue de la courbe il faut d'abord calculer la courbe une première fois pour obtenir l'approximation du nombre de pixels contigues pour ensuite recalculer la courbe pour l'afficher !!! Beaucoup trop lent !!! Perso, je subdivisais la courbe par 0,01 ce qui me donnait une précision suffisante pour un affichage en 1024x768. Mais je calcule trop de points.

- La solution serait, à la limite, de trouver un rapport le nombre de subdivisions et une valeur type largeur/hateur de la courbe(par ses points)/écran ou de son hypoténuse ou autre pour obtenir une précision à l'unité de type nombre entiers employée (le Pixel en l'occurrence).

- Ou alors, de trouver à coup sûr un ratio inférieur à l'unité utilisée pour pouvoir arrondir les coordonnées et faire un teste de mémorisation du style : If CoordsXY = beforeCoordsXY then non_mémoriser

Qu'en dis-tu ???
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
3 nov. 2006 à 22:34
Arf, non, ça ne fonctionne pas.
En fait, je t'explique : ce que j'essaie de faire c'est d'éviter le vilain effet de doublage des lignes (à certain endroits [i.e. aux endroits où les points sont rapprochés {dans les courbes violentes}]) qui apparait dans les algos basiques (tel celui sur codetoad). J'essaie de reproduire celles de Windows (via les API) afin, non pas de réinventer la roue, mais de l'améliorer (WuPixelling entre autre). D'ailleurs, le ration 0.01 est bien meilleur que celui de 0.001 !!! Sauf en cas de dessin extrêmes sur toute la longueur du Long des PictureBox (et autres devices dependant contexts).
Puisque Crosoft peut le faire, j'vois pas ce qui nous empêche de le refaire
Je pense que la solution mathématique a un rapport directe avec l'équation de base... oui mais, lequel, telle est la question !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
4 nov. 2006 à 10:02
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 nov. 2006 à 14:27
Salut,

je sais pas si ça peut t'aider mais je viens de retomber inopinément sur cet exemple :
http://www.allapi.net/vbexamples/vbexample.php?vbexample=BEZIER&category=SOURCEhttp://www.allapi.net/vbexamples/vbexample.php?vbexample=BEZIER&category=SOURCE

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
Rejoignez-nous