Maison >développement back-end >C++ >Implémentation C++ de l'algorithme de génération de ligne médiane

Implémentation C++ de l'algorithme de génération de ligne médiane

王林
王林avant
2023-09-09 19:49:101190parcourir

Implémentation C++ de lalgorithme de génération de ligne médiane

Une ligne relie deux points. C'est un élément de base en graphisme. Pour tracer une ligne il vous faut deux points et vous tracez une ligne entre ces deux points sur l'écran, en terme de graphisme on appelle ces points pixels et chaque pixel est associé à une coordonnée entière. Nous donnons des coordonnées entières sous la forme (x1, y1) et (x2, y2) où x1

Trois algorithmes différents sont utilisés pour l'exécution à l'écran. génération de ligne, ce sont-

  • Algorithme DDA

  • Génération de ligne Bresenham

  • Algorithme de point médian

Algorithme de point médian

Les étapes pour tracer une ligne à l'aide de l'algorithme de ligne pointée des points médians sont-

  • Utilisez le point d'ancrage actuel pour calculer le point médian, c'est-à-dire que l'est (Xp+1, Yp) et le nord-est (Xp+1, Yp) +1) sont le point médian (Xp+1, Yp+1/2).

  • Maintenant, le point médian déterminera l'emplacement de la prochaine coordonnée sur l'écran, c'est-à-dire p>

    • Si le point médian est au-dessus de la ligne, la prochaine coordonnée sera du côté est.

    • Si le point médian est en dessous de la ligne, alors la prochaine coordonnée sera au nord-est.

Voyons différents scénarios d'entrée et de sortie ceci-

input− int x_1 = 3, int y_1 = 3, int x_2 = 10, int y_2 = 8

output

output

fort >− Le point médian de l'algorithme de génération de ligne est : 3,3 4,4 5,5 6,5 7,6 8,7 9,7 10,8

Explication− Les coordonnées que nous donnons sont x_1 = 3, x_2 = 10, y_1 = 3, y_2 = 8. Ainsi, les étapes calculent d'abord dx = x_2 - x_1 comme 10 - 3 = 7 et dy comme y_2 - y_1 8 - 3 = 5 et Vérifiez ensuite si dy est inférieur à dx. Calculez maintenant d comme 5 - (7 / 2) = 2. Les premiers points sont x_1 et y_1. Imprimez-les. Maintenant, lorsque x_1

Entrée : int x_1 = 2, int y_1 = 2, int x_2 = 3, int y_2 = 4

Sortie : Le point médian obtenu par l'algorithme de génération de segment de ligne est : 2,2 3,3 3, 4

Explication : Les coordonnées données sont x_1 = 2, x_2 = 2, y_1 = 3, y_2 = 4. En appliquant l'algorithme de génération de segment médian, nous calculerons tous les pixels médians en sortie.

La méthode utilisée dans le programme suivant est la suivante :

  • Les points entiers d'entrée sont int x_1, int y_1, int x_2, int y_2. Appelez la fonction Mid_Point(x_1, y_1, x_2, y_2) pour générer un segment de ligne.

  • À l'intérieur de la fonction Mid_Point (x_1, y_1, x_2, y_2)

    • calcule dx comme x_2 - x_1, dy comme y_2 - y_1

    • Vérifiez SI dy est inférieur ou égal à dx, puis définissez d à dy - (dx/2), définissez first_pt sur x_1 et second_pt sur y_1

    • Imprimez first_pt et second_pt.

    • Démarrez la boucle while, lorsque first_pt est inférieur à x_2, augmentez first_pt 1 et vérifiez SI d est inférieur à 0, puis définissez d sur d + dy, sinon définissez d sur d + (dy - dx), et set second_pt Augmenter de 1. Imprimez first_pt et second_pt.

    • Sinon, si dx est inférieur à dy, définissez d sur dx - (dy/2), définissez first_pt sur x_1, définissez second_pt sur y_1 et imprimez first_pt et second_pt.

    • Démarrez la boucle while Lorsque second_pt est inférieur à y_2, incrémentez second_pt à l'intérieur de la boucle. second_pt est incrémenté de 1. Vérifiez SI d est inférieur à 0, puis définissez d sur d + dx. Sinon, définissez d sur d + (dx - dy) et augmentez first_pt de 1.

    • Imprimez first_pt et second_pt.

Exemple

#include<bits/stdc++.h>
using namespace std;

void Mid_Point(int x_1, int y_1, int x_2, int y_2){
   int dx = x_2 - x_1;
   int dy = y_2 - y_1;

   if(dy <= dx){
      int d = dy - (dx / 2);
      int first_pt = x_1;
      int second_pt = y_1;

      cout<< first_pt << "," << second_pt << "\n";
      while(first_pt < x_2){
         first_pt++;
         if(d < 0){
            d = d + dy;
         }
         else{
            d = d + (dy - dx);
            second_pt++;
         }
            cout << first_pt << "," << second_pt << "\n";
      }
   }
   else if(dx < dy){
      int d = dx - (dy/2);
      int first_pt = x_1;
      int second_pt = y_1;
      cout << first_pt << "," << second_pt << "\n";
      while(second_pt < y_2){
         second_pt++;
         if(d < 0){
            d = d + dx;
         }
         else{
            d += (dx - dy);
            first_pt++;
         }
         cout << first_pt << "," << second_pt << "\n";
      }
   }
}
int main(){
   int x_1 = 3;
   int y_1 = 3;
   int x_2 = 10;
   int y_2 = 8;
   cout<<"Mid-Points through Line Generation Algorithm are: ";
   Mid_Point(x_1, y_1, x_2, y_2);
   return 0;
}

Output

Si nous exécutons le code ci-dessus, il générera la sortie suivante

Mid-Points through Line Generation Algorithm are: 3,3
4,4
5,5
6,5
7,6
8,7
9,7
10,8

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer