Implémentation C++ de l'algorithme de génération de ligne médiane
Sep 09, 2023 pm 07:49 PMUne 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,8Explication− 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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Gulc: Cibliothèque C construite à partir de zéro

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Utilisation distincte et partage de phrases

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?
