SofianeLasri

Algorithme de point médian

Mar 31st, 2022
899
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. void ellipseMedian(MyGrillePixels & g, int xC, int yC, int rayonX, int rayonY){
  2.     // Premier quadrant
  3.     int x=0, y=rayonY, d, deltaE, deltaSE;
  4.     int b2=rayonY*rayonY, a2=rayonX*rayonX;
  5.  
  6.     d = 4*b2 + a2*(1-4*rayonY);
  7.  
  8.     g.allumerPixel(0+xC,rayonY+yC,126,20,251); // Allumage du promier et de ses 3 symétriques
  9.     g.allumerPixel(0+xC,-rayonY+yC,126,20,251);
  10.     g.allumerPixel(rayonX+xC,0+yC,126,20,251);
  11.     g.allumerPixel(-rayonX+xC,0+yC,126,20,251);
  12.  
  13.     while(2*b2*(x+1) < a2*(2*y-1)){ // 1ère région
  14.         if(d<0){ // Mouvement vers l'est
  15.             d+=b2*(8*x+12);
  16.             x++;
  17.         }else{ // Mouvement vers Sud Est
  18.             d+= b2*(8*x+12)+8*a2*(1-y);
  19.             x++; y--;
  20.         }
  21.  
  22.         g.allumerPixel(x+xC,y+yC,126,20,251);
  23.         g.allumerPixel(-x+xC,y+yC,126,20,251);
  24.         g.allumerPixel(-x+xC,-y+yC,126,20,251);
  25.         g.allumerPixel(x+xC,-y+yC,126,20,251);
  26.     }
  27.  
  28.     // 2ème région
  29.     d = b2*(2*x+1)*(2*x+1) + 4*a2*(y-1)*(y-1)-4*a2*b2;
  30.  
  31.     while(y>0){
  32.         if(d<0){ // Mvt SE
  33.             d+= a2*(12-8*y)+b2*(8*x+8);
  34.             x++;
  35.             y--;
  36.         }else{ // Mvt S
  37.             d+= a2*(12-8*y);
  38.             y--;
  39.         }
  40.         g.allumerPixel(x+xC,y+yC,126,20,251);
  41.         g.allumerPixel(-x+xC,y+yC,126,20,251);
  42.         g.allumerPixel(-x+xC,-y+yC,126,20,251);
  43.         g.allumerPixel(x+xC,-y+yC,126,20,251);
  44.     }
  45.  
  46.     while(x<rayonX){
  47.         g.allumerPixel(x+xC,y+yC,126,20,251);
  48.         g.allumerPixel(-x+xC,y+yC,126,20,251);
  49.         g.allumerPixel(-x+xC,-y+yC,126,20,251);
  50.         g.allumerPixel(x+xC,-y+yC,126,20,251);
  51.         x++;
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment