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.
Version imprimable
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.
Désolé mais je ne comprend toujours pas.
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+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.
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.
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 ?
Bonjour :coucou:
Plus juste surtout. Entre 1.0 et 1.999, il y a presque une différence de 1.
Alors qu'en déplaçant de 0.5, l'erreur ne sera pas de plus que 0.5.
L'erreur e est entre 0 et 1 dans le premier cas et entre -0.5 et +0.5 dans le second cas (celui de l'algorithme)
Merci Flodelarab pour ta réponse.