Je suis en train de dessiner une courbe entre deux points, en particulier, je laisse une photo de ce que je veux:Comment dessiner la courbe entre deux points? OpenGL
Cette image a été prise de cette pdf sur page 10.
Je comprends que cela applique le concept de Bresenham algorithm
mais ne sais pas comment mettre en œuvre le concept de dessiner la courbe.
Sur page 11 du pdf pseudocode algorithm
montré, mais ne comprennent pas le concept de "erreur" à mettre en œuvre. S'il vous plaît, si quelqu'un peut m'aider à comprendre cela. Je travaille avec C++ et OpenGL.
pseudocode:
set up x, y to x0, y0
set up error variable exy for P(x0+1,y0+1)
loop
set pixel x, y
if ex + exy > 0 then increment x, sub difference error
if ey + exy < 0 then increment y, add difference error
loop until end pixel
Merci vous tous.
"* Je comprends que cela applique le concept de l'algorithme de Bresenham, mais je ne sais pas comment implémenter le concept de dessiner la courbe. *" L'algorithme de Bresenham n'est pas pour dessiner des lignes, pas des courbes. Maintenant, vous pouvez utiliser l'algorithme de Bresenham pour dessiner une courbe en la divisant d'abord en un groupe de lignes. Mais c'est une question différente. –
Alors allez chercher des splines cubiques et/ou quadratiques. Il y a des rames écrites sur le calcul des points sur chacun. Comme l'a dit Nicol - l'algorithme de Bresenham n'a pas (ou très peu, au mieux) d'utilisation pratique ici. – enhzflep
L'algorithme de Bresenham pour les courbes est toujours uniquement pour une équation/type de courbe spécifique que vous dérivez au moment de la compilation/du code. donc si vous créez Bresenham pour l'ellipse, il dessine toujours juste l'ellipse. Cette limitation est inacceptable pour une forme de courbe arbitraire sans mentionner la subdivision par des points inflexes etc ... Utilisez plutôt des courbes cubiques. voir [Implémentation correcte de l'interpolation de spline cubique] (http://stackoverflow.com/a/20517874/2521214) Toutes les courbes cubiques sont traitées de la même manière, la seule différence est de savoir comment calculer les coefficients. – Spektre