Bonjour, j'aimerai avoir quelque explication sur cette algorithme ;
si on prend l'algo naïf soit y=m(x-x1)+y1+0.5.
Pourquoi on ajoute 0.5, à quoi corresponde les 0.5.
Merci par avance.
Bonjour, j'aimerai avoir quelque explication sur cette algorithme ;
si on prend l'algo naïf soit y=m(x-x1)+y1+0.5.
Pourquoi on ajoute 0.5, à quoi corresponde les 0.5.
Merci par avance.
C'est marqué: https://fr.wikipedia.org/wiki/Algori...t_de_Bresenham
C'est pour arrondir à l'entier le plus proche plutôt que l'entier inférieur.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
La plupart des opérations impliquant un arrondissement (comme la conversion en entier) arrondissent automatiquement à l'inférieur (ou tronquent, ce qui est la même chose pour les nombres positifs).
Mais il s'avère que:
Code X : Sélectionner tout - Visualiser dans une fenêtre à part x+0.5 arrondi à l'inférieur == x arrondi au plus proche
Exemple: 0.75 arrondi à l'inférieur = 0; 0.75 arrondi au plus proche = 1; 0.75+0.5 arrondi à l'inférieur = 1 aussi.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ha ok merci pour ton aide
Donc sa veut dire que si j'ai une droite qui passe par le point A(0;0) et B(7;4), en appliquant la formule :
y=m(x-x1)+y1+0.5 j'obtiens :
pour x=0 y=0.50 y est donc arrondit au plus proche soit y==0
pour x=1 y=1.64 y est donc arrondit au plus proche soit y==2
pour x=2 y=2.21 y est donc arrondit au plus proche soit y==2
pour x=3 y=2.78 y est donc arrondit au plus proche soit y==3
pour x=4 y=3.35 y est donc arrondit au plus proche soit y==3
Donc si je comprend bien quand on compile l'os quand il transformera un float en int arrondira au plus proche.
Mais si on ne met pas les 0.5 à la compilation l'os arrondira aussi au plus proche non ? c'est à dire :
au lieu d'avoir y=0.50 on a y=0.00 y à l'arrondit le plus proche vaudra y==0
au lieu d'avoir y=1.64 on a y=1.04 y à l'arrondit le plus proche vaudra y==1
au lieu d'avoir y=2.21 on a y=1.71 y à l'arrondit le plus proche vaudra y==2
au lieu d'avoir y=2.78 on a y=2.28 y à l'arrondit le plus proche vaudra y==2
au lieu d'avoir y=3.35 on a y=2.85 y à l'arrondit le plus proche vaudra y==3
Mais alors pourquoi choisir de mettre 0.5 moi sans les 0.5 sa me convient aussi est-ce que le faite de rajouté les 0.5 fait que la droite tracé sera plus jolie à l'écran ?
Non, par défaut lors d'une conversion en int il tronque au lieu d'arrondir au plus proche.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Donc comment fait on pour arrondir au plus proche? pour qui si on a float y=1.67 devienne y==2 et non pas y==1 ?
Merci à toi je comprends mieux.
Mais alors qu'elle est l'intérêt pour l'algorithme de bresenham de faire cela perso je n'en vois pas.
Je fais des droites sans les 0.5 et sa marche très bien aussi.
Pourquoi alors rajouter les 0.5 pour que la droite soit plus jolie ?
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager