Algorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueM. AMMIM. AMMIammi@limsi.framm...
HistoriqueHistorique•• 19441944 :: LeLe premierpremier ordinateurordinateur électriqueélectrique etet programmableprogramm...
HistoriqueHistorique•• 1979 : James H. Clark conçoit le premier processeur1979 : James H. Clark conçoit le premier process...
Domaines d’applicationDomaines d’application•• Art & divertissementArt & divertissement• Films d’animation,Effets spéciaux...
Domaines d’applicationDomaines d’application•• Suivi de processus et Téléopération (online)Suivi de processus et Téléopéra...
Domaines d’applicationDomaines d’application•• Simulateurs (offline)Simulateurs (offline)•• Conduite/Pilotage, Processus,C...
Domaines d’applicationDomaines d’application•• Visualisation de donnéesVisualisation de données•• MédicalesMédicales•• Géo...
Domaines d’applicationDomaines d’application•• Conception assistée par ordinateurConception assistée par ordinateur•• Imme...
DéfinitionsDéfinitions•• DéfinitionDéfinition officielleofficielle dede l’infographiel’infographie (office(office dede lal...
•• LaLa géométriegéométrie estest l’élémentl’élément constitutifconstitutif essentielessentiel dede toutetoute imageimage ...
Pipeline GraphiquePipeline Graphique
Pipeline GraphiquePipeline GraphiqueTransformations demodélisationIllumination(Shading)TransformationsModèle de laModèle d...
Transformations de modélisationTransformations de modélisation•Application des transformations decomposition de scène : Pa...
IlluminationIllumination•Les primitives sont éclairées selonleur matériau, le type de surface et lessources de lumière.•Le...
Transformations d’affichageTransformations d’affichage•Passe des coordonnées du monde àcelles du point de vue (repère camé...
ClippingClipping•Passage en coordonnées normalisées(NDC : normalized device coordinates)Transformations demodélisationIllu...
Transformation écranTransformation écran•Les primitives 3D sont projetées surlespace image 2D (screen space)Transformation...
RasterisationRasterisation•Découpe des primitives 2D en pixels•Interpole les valeurs connues auxsommets : couleur, profond...
Visibilité et affichageVisibilité et affichage•Élimination des parties cachées•Remplissage du frame buffer avec lebon form...
Système de coordonnéesSystème de coordonnéesRepère objetRepère scèneTransformations demodélisationIllumination(Shading)Tra...
Le pipeline graphiqueLe pipeline graphique•Modèle géométrique : objets,surfaces, sources de lumière…•Modèle d’illumination...
Le pipeline graphiqueLe pipeline graphique•Chaque primitive passesuccessivement par toutes les étapes•Le pipeline peut êtr...
ImplémentationImplémentationTransformations demodélisationIllumination(Shading)TransformationsSoftwareconfigurableSans car...
ImplémentationImplémentationTransformations demodélisationIllumination(Shading)Transformations SoftwareconfigurableHardwar...
ImplémentationImplémentationTransformations demodélisationIllumination(Shading)TransformationsCartes graphiquesdeuxième gé...
ImplémentationImplémentationTransformations demodélisationIllumination(Shading)TransformationsCartes graphiquestroisième g...
Rappels mathématiquesRappels mathématiques
ScalaireScalaire•• Un scalaire est une grandeur totalement définie par un nombreUn scalaire est une grandeur totalement dé...
ScalaireScalaire•• Opérations élémentaires:Opérations élémentaires:•• Addition & multiplicationAddition & multiplication••...
VecteurVecteur•• Un vecteurUn vecteur est une entité mathématique définie par n valeurs numériquesest une entité mathémati...
Vecteurs unitairesVecteurs unitaires•• Dans un repère les vecteurs sont décrit dans une base (unités de l’ensemble)Dans un...
VecteurVecteur•• Les vecteurs obéissent aux lois de lalgèbre vectorielleLes vecteurs obéissent aux lois de lalgèbre vector...
Produit scalaireProduit scalaire• Le produit scalaire de deux vecteurs est le produit du module du premier parla composant...
Produit scalaireProduit scalaire•• Propriétés :Propriétés :•• CommutativitéCommutativitéDistributivitéDistributivité par l...
Produit scalaireProduit scalaire•• Angle entre deux vecteursAngle entre deux vecteursθcos. BABArrrr=zzyyxx BABABABA ++=rr....
Produit scalaireProduit scalaire•• ApplicationApplication•• Projection d’un vecteur sur un autreProjection d’un vecteur su...
Produit vectorielProduit vectoriel• Le module du produit vectoriel dedeux vecteurs est le produit du moduledu premier par ...
Produit vectoriel en fonction des composantes:Produit vectorielProduit vectorielyxyxzxzxzyzyzyxBBAAkBBAAjBBAAiBBBAAAkjiBAr...
Produit vectorielProduit vectoriel•• PropriétésPropriétés•• AnticommutativitéAnticommutativité•• Distributivité sur laddit...
Produit vectorielProduit vectoriel•• ApplicationApplication•• Calcul de la normale à un planCalcul de la normale à un plan
Addition de deux vecteursAddition de deux vecteurs•• L’addition de deux vecteurs obéit à la règle du parallélogramme.L’add...
Addition de deux vecteursAddition de deux vecteursUn vecteur A peut être décomposé en sescomposantes rectangulaires Ax et ...
NormeNorme•• La norme d’un vecteur est sa taille.La norme d’un vecteur est sa taille.•• Cette taille est calculée par le t...
Normalisation d’un vecteurNormalisation d’un vecteur•• La normalisation fait qu’un vecteur devienne unitaire, c’estLa norm...
MatriceMatrice•• On appelle matrice M un tableau à deux indices de n*m valeursOn appelle matrice M un tableau à deux indic...
MatriceMatrice•• Opération possibleOpération possible•• AdditionAddition•• MatriceMatrice--matricematrice•• ScalaireScalai...
Produit matrice par vecteurProduit matrice par vecteur•• Soient :Soient :•• un vecteur de dimension n (vi, 1 <= i <= n)un ...
Produit matrice par vecteurProduit matrice par vecteur•• ExempleExemple
Produit matrice par matriceProduit matrice par matrice•• Soient deux matrices et de dimensions respectives :Soient deux ma...
Produit matrice par matriceProduit matrice par matrice•• ExempleExemple
Espace vectorielEspace vectoriel -- Espace affineEspace affine•• UnUn espaceespace vectorielvectoriel estest l’espacel’esp...
TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitude...
TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitude...
TransformationsTransformations•• Transformations Euclidiennes rigides : 6 DDLTransformations Euclidiennes rigides : 6 DDL•...
TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitude...
TransformationsTransformations•• Similitudes : 7 DDLSimilitudes : 7 DDL•• Rotation (3DDL), Translation (3DDL), HomothétieR...
TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitude...
TransformationsTransformations•• Transformations linéaires : 9DDLTransformations linéaires : 9DDL•• Rotation (3DDL), Homot...
TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitude...
TransformationsTransformations• Transformations affines : 12 DDL•• Rotation (3DDL), Translation (3DDL), Homothétie (3DDL),...
TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitude...
TransformationsTransformations•• Transformations projectives ou homographie : 15 DDLTransformations projectives ou homogra...
Transformations de modélisationTransformations de modélisation•Application des transformations decomposition de scène : Pa...
Les transformations élémentairesLes transformations élémentairesLes transformations élémentairesLes transformations élémen...
TransformationsTransformations•• Utilisations :Utilisations :•• Déplacement dun objet dans une scèneDéplacement dun objet ...
TransformationsTransformations•• Un objet est décrit par un ensemble de sommetsUn objet est décrit par un ensemble de somm...
TransformationsTransformations•• On utilise la notation vectorielleOn utilise la notation vectorielle•• Les sommets sont r...
TransformationsTransformations•• Translation :Translation :•• Ajouter aux coordonnées du sommet la valeur de la translatio...
TransformationsTransformations•• Rotation par rapport à l’origine autour de l’axe ZRotation par rapport à l’origine autour...
TransformationsTransformations•• HomothétieHomothétie•• Multiplication par les facteurs d’échellesMultiplication par les f...
TransformationsTransformations•• La notation matricielleLa notation matricielle•• Permet une notation simple, concisePerme...
Coordonnées homogènesCoordonnées homogènes•• LesLes coordonnéescoordonnées homogèneshomogènes sontsont utiliséesutilisées ...
Coordonnées homogènesCoordonnées homogènes•• Ainsi, si (x,y,z) sont les coordonnées dun point de la scène à transformer et...
Manipulations géométriquesManipulations géométriques•• Soit un pointSoit un point•• Soit une transformation géométrique dé...
TranslationsTranslations==××1010001000131133 TITTTTzyx 1000PTzTyTxTzyxTTTPTPzyxzyx+=...
Rotations (angles d’Euler)Rotations (angles d’Euler)==×××1001000000311333333231232221131211RRRRRRRRR...
Rotations (angles d’Euler)Rotations (angles d’Euler)•• Règles pour la construction de la matrice de rotation d’angleRègles...
Homothétie isotropeHomothétie isotrope==×××1001000000000000311333SSSSR 1000PSzSySxSzyxSSSPSP .1....
Homothétie : Affinités orthogonalesHomothétie : Affinités orthogonales==×××1001000000000000311333SSS...
GlissementGlissement•• Appelée aussiAppelée aussi shearshear ou cisaillement : étirement suivant un axeou cisaillement : é...
Composition de Transformations
(0,0)(1,1)(2,2)(0,0)(5,3)(3,1)Scale(2,2) Translate(3,1)Composition de TransformationsExemple :Exemple :(0,0) (0,0)Multipli...
homothétie puis translation : p = T .(S .p ) = T.S .p(1,1)(2,2)(5,3)(3,1)Scale(2,2) Translate(3,1)Non-commutatifCompositio...
==100120302100020002.100110301)2,2().1,3( STComposition de Transformations=...
p’ = M . p et p" = M’. p’=>Cas généralComposition de Transformations=>p" = M’ . M . poup" = M" . p avec M" = M’ . M
Ordre d’ApplicationComposition de Transformationsp" = M’ . M . p => M puis M’On applique M à P, puis M’ au résultat :On ap...
Composition de Transformations•• Les transformations élémentaires sont définies parLes transformations élémentaires sont d...
Exemple 1 :On désire établir la transformation consistant à effectuer unerotation de Өz radians autour de laxe colinéaire ...
Cette transformation M est réalisée en amenant p à lorigine par unetranslation T de -p, puis en effectuant une rotation R ...
Composition de Transformations−−− −=1000100010001.1000010000cossin00sincos.10001...
Composition de Transformations•• Les compositions de transformations servent àLes compositions de transformations servent ...
Modélisation hiérarchiqueModélisation hiérarchique•• Un modèle hiérarchique permet de décrire facilement desUn modèle hiér...
Modélisation hiérarchiqueModélisation hiérarchique
Modélisation hiérarchiqueModélisation hiérarchique•• Construction du graphConstruction du graph•• On commence par un proce...
Modélisation hiérarchiqueModélisation hiérarchiqueExemple : MaisonExemple : Maison
Modélisation hiérarchiqueModélisation hiérarchiqueMaisonTmTcTgFenêtre 1PorteFacadeGarage Corps PrincipalFenêtre 2 Fenêtre ...
Modélisation hiérarchiqueModélisation hiérarchiqueporte a du garage Tm.Tg.TgaPile de transformationsPile de transformation...
Changement de repèreChangement de repère•• Permet de transformer les coordonnées dun point expriméesPermet de transformer ...
Changement de repèreChangement de repère•• Soient deux repèresSoient deux repères RR11 etet RR22•• SoitSoit MM la matrice ...
Changement de repèreChangement de repère12 .pMp =21312111 x xTRRRx211.10001221233323123222111RzyRzyTRRRTRRRzy...
Changement de repèreChangement de repèreZZ11ZZ22 XX22ӨӨzz 0 RRRRR11YY11XX11RR22ZZ22YY22XX22ӨӨzzӨӨyyӨӨxx12333231232221131...
Changement de repèreChangement de repèreZZ11ZZ22 XX22RR11YY11XX11RR22YY22TT123332312322211312111000 →zyxTRRR...
Changement de repèreChangement de repère•• Passage du repère R1 au repère R2Passage du repère R1 au repère R2ZZ11RR22ZZ22 ...
La projectionLa projectionLa projectionLa projection
Transformation écranTransformation écran•Les primitives 3D sont projetées surlespace image 2D (screen space)Transformation...
La projectionLa projection•• La projection est une réduction du nombre de dimensions.La projection est une réduction du no...
XXXX•• On note que la projection dune droite en 3D est une droite en 2D.On note que la projection dune droite en 3D est un...
La projectionLa projection•• LesLes projectionsprojections desdes objetsobjets sontsont forméesformées parpar lesles inter...
Les projectionsLes projections•• Si le centre de projection (CP) est localisé à un point fini de l’esSi le centre de proje...
Les projectionsLes projections•• Deux familles de projections :Deux familles de projections :•• Projections parallèles.Pro...
Projections parallèlesProjections parallèles•• Conditions :Conditions :•• La projection se fait dans le plan de projection...
Projections parallèlesProjections parallèles•• Projection orthographiqueProjection orthographique•• Projecteurs parallèles...
Projection orthographiqueProjection orthographique•• Vue de devant, d’en haut, et de côtéVue de devant, d’en haut, et de c...
Projection orthographiqueProjection orthographique•• La projection orthographique consiste à supprimer uneLa projection or...
Projection orthographiqueProjection orthographique•• Forme matricielle :Forme matricielle := . pMp PZ...
Projection orthographiqueProjection orthographique•• Vues de devant, d’en haut et de côté : la projection est faite sur un...
Projection orthographiqueProjection orthographique•• Projection orthographique axonométriqueProjection orthographique axon...
Projection obliqueProjection oblique•• Direction de la projection n’est pas perpendiculaire au planDirection de la project...
Projection obliqueProjection obliqueobjetobjetprojetéprojetéprojectionprojectionde l’objetde l’objetDPDPprojetéprojeté
Projection perspectiveProjection perspective
Projection perspectiveProjection perspective•• Réaliste : La taille de la projection d’un objet varie inversementRéaliste ...
Projection perspectiveProjection perspective•• Point de fuitePoint de fuite•• Si une droite D coupe le plan de projection,...
Projection perspectiveProjection perspective•• On différencie les projections en perspective par le nombreOn différencie l...
Projection perspectiveProjection perspective•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective d...
Projection perspectiveProjection perspective•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective d...
Projection perspectiveProjection perspective•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective d...
Projection perspectiveProjection perspective•• Représentation en forme matricielle :Représentation en forme matricielle :⇒...
Projection perspectiveProjection perspective+−1fzxx+−+−=⇒+−=...
Projection perspectiveProjection perspectivePlan dePlan deprojectionprojectionffzzZZCentre deCentre deprojectionprojection...
Projection perspectiveProjection perspectivePlan dePlan deprojectionprojectionff22zzZZCentre deCentre deprojectionprojecti...
Projection perspectiveProjection perspective• Plus f est large, plus la projection tend vers une projectionparallèle, où l...
Projection perspectiveProjection perspective•• Transformations nécessairesTransformations nécessaires
Projection perspectiveProjection perspective=1.1000033323102322210...
Projection perspectiveProjection perspective=1.1100010000100001.11111110...
Projection perspectiveProjection perspective
Projection perspectiveProjection perspective 01312110010001cx xrrrtPassage du repère monde au plan imagePa...
RasterisationRasterisation•Découpe des primitives 2D en pixels•Interpole les valeurs connues auxsommets : couleur, profond...
RasterisationRasterisation•• Traçage :Traçage :Segments de droitesSegments de droites•• Segments de droitesSegments de dro...
Tracé de segments de droitesTracé de segments de droites•• Algorithme de base pour beaucoup de traitements de lInformatiqu...
Tracé de segments de droitesTracé de segments de droites•• Trois impératifs:Trois impératifs:•• Tout point du segment disc...
Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Le tracé d’un segment entre deux po...
Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienneDroiteSimple(int xDroiteSimple(int x11...
Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Incrémentation suivant l’axe xIncré...
Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Incrémentation suivant l’axe yIncré...
Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Il faut switcher entre les deux ver...
Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Caractéristiques:Caractéristiques:•...
Algorithmes de BresenhamAlgorithmes de Bresenhamxk xk+1 xk+2 xk+4xk+3ykJack Bresenham1962
Algorithmes de BresenhamAlgorithmes de Bresenhamd1d1--d2 > 0 ?d2 > 0 ?xk xk+1 xk+2 xk+4xk+3ykd1d2d1d1--d2 > 0d2 > 0
Algorithmes de BresenhamAlgorithmes de Bresenhamxk xk+1 xk+2 xk+4xk+3ykyk+1d1d2d1d1--d2 = 0d2 = 0
Algorithmes de BresenhamAlgorithmes de Bresenhamd2xk xk+1 xk+2 xk+4xk+3ykd1d2yk+1d1d1--d2 < 0d2 < 0
Algorithmes de BresenhamAlgorithmes de Bresenhamxk xk+1 xk+2 xk+4xk+3yk
Algorithmes de BresenhamAlgorithmes de BresenhamDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,...
Algorithmes de BresenhamAlgorithmes de BresenhamPrincipe :• Paramètre de décision : e (distance pixel -> droite)• Si e < 0...
Algorithmes de BresenhamAlgorithmes de Bresenhame = 0e = 0x= xx= x11y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenhame = 0e = 0x= xx= x11y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenhame = 0e = 0x= xx= x11y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dxe = dy/dxx= xx= x11y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dxe = dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dx ; e>0.5 =>e = dy/dx + dy/dx ; e>0.5 =>x= x+1x= x+1y= y+1...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 11x= x+1x= x+1y= y+1y= y+1
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx ; e<0.5 =>1 + dy/dx ; e<0....
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx1 + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx ; e<0.5 =>1 + dy/d...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx ; e<0.5 =>...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx +...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx +...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx ; ...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx1 +...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx1 +...
Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx1 +...
Algorithmes de BresenhamAlgorithmes de Bresenham•• Algorithme de baseAlgorithme de baseDroiteBresenham(int xDroiteBresenha...
Algorithmes de BresenhamAlgorithmes de Bresenham•• supprimer la division parsupprimer la division par ddxxDroiteBresenham(...
Algorithmes de BresenhamAlgorithmes de Bresenham•• division par 2 à supprimerdivision par 2 à supprimerDroiteBresenham(int...
Algorithmes de BresenhamAlgorithmes de Bresenham•• optimisations pour rendre lalgorithme plus rapideoptimisations pour ren...
Algorithmes de BresenhamAlgorithmes de Bresenham•• modifier e quune seule fois lors de chaque itérationmodifier e quune se...
Algorithmes de BresenhamAlgorithmes de Bresenham•• calculer davance les deux incréments possibles pour e : déplacement hor...
Algorithmes de BresenhamAlgorithmes de Bresenham•• Caractéristiques :Caractéristiques :•• Plus grande complexité algorithm...
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cerclesd2d2d1d1d1>d2d1>d2
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cerclesd2d2d1>d2d1>d2d1d1d2d2
Tracé de cerclesTracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles• On suppose le centre à l...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• Forme implicite du cerc...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur de...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur de...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur de...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur de...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur de...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur de...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur de...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• Le calcul de l’erreur s...
Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cerclesCerclePointMilieu(int r)Ce...
•• La généralisation aux huit octants se fait en remplaçant la procLa généralisation aux huit octants se fait en remplaçan...
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Prochain SlideShare
Chargement dans…5
×

Algorithmique graphique

1 385 vues

Publié le

Ce cours englobe la majorité des concepts du domaine de graphisme.

Publié dans : Formation
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 385
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
160
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Algorithmique graphique

  1. 1. Algorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueM. AMMIM. AMMIammi@limsi.frammi@limsi.fr20092009
  2. 2. HistoriqueHistorique•• 19441944 :: LeLe premierpremier ordinateurordinateur électriqueélectrique etet programmableprogrammable estest construitconstruit auxaux ÉtatsÉtats--UnisUnis•• 19501950 :: MIT,MIT, premierpremier écranécran (vectoriel)(vectoriel) contrôlécontrôlé parpar ordinateurordinateur•• 19621962 :: PP.. BezierBezier (Renault)(Renault) metmet auau pointpoint uneune méthodeméthode pourpour tracertracer desdes courbescourbes ouou desdessurfacessurfaces•• 19631963 :: SketchpadSketchpad (thèse(thèse dede IvanIvan Sutherland),Sutherland), proposepropose unun premierpremier modèlemodèle completcomplet dedesystèmesystème graphiquegraphique interactifinteractif (sélectionner,(sélectionner, pointer,pointer, dessiner,dessiner, éditer)éditer);; identifieidentifie leslesstructuresstructures dede donnéesdonnées etet algorithmesalgorithmes nécessairesnécessaires.. AvancéeAvancée majeuremajeure dansdans lele domainedomainedudu graphismegraphisme19651965 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tracétracé dede ligneslignes•• 19651965 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tracétracé dede ligneslignes•• 19691969 :: JJ.. WarnockWarnock proposepropose unun algorithmealgorithme dede subdivisionsubdivision pourpour lala suppressionsuppression desdes facesfacescachéescachées•• 19711971 :: HH.. GouraudGouraud faitfait uneune thèsethèse avecavec EvansEvans àà l’Universitél’Université d’Utahd’Utah oùoù ilil metmet auau pointpointunun algorithmealgorithme dede lissagelissage d’ombresd’ombres•• 19711971 :: RR.. GoldsteinGoldstein etet RR.. NagelNagel posentposent lesles basesbases dede lala CSGCSG (Constructive(Constructive SolidSolidGeometryGeometry))•• 19721972 :: RR.. ShoupShoup (Xerox)(Xerox) metmet auau pointpoint lele premierpremier frameframe--bufferbuffer 88 bitsbits•• 19741974 :: EE.. CatmullCatmull (Utah)(Utah) soutientsoutient sasa thèsethèse sursur lele placageplacage dede texture,texture, lele ZZ--bufferbuffer etet lelerendurendu dede surfacessurfaces courbescourbes•• 19741974 :: BB.. PhongPhong (Utah)(Utah) inventeinvente unun nouvelnouvel algorithmealgorithme dede lissagelissage d’ombresd’ombres•• 19741974 :: SutherlandSutherland etet HodgmanHodgman développentdéveloppent unun algorithmealgorithme dede clippingclipping dede polygonespolygones•• 19771977 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tracétracé dede cerclescercles•• 19781978 :: CyrusCyrus etet BeckBeck proposentproposent unun algorithmealgorithme dede clippingclipping dede segmentssegments
  3. 3. HistoriqueHistorique•• 1979 : James H. Clark conçoit le premier processeur1979 : James H. Clark conçoit le premier processeurprogrammable dédié au graphisme 3Dprogrammable dédié au graphisme 3D•• 19821982 :: créationcréation dede SiliconSilicon GraphicsGraphics,, d’Adobed’Adobe etet d’d’AutoDeskAutoDesk•• 19841984 :: premierspremiers travauxtravaux sursur lala radiositéradiosité àà CornellCornell UniversityUniversity•• 1985 : création de ATI : conception de circuits intégrés1985 : création de ATI : conception de circuits intégrésgraphiquesgraphiques•• 19871987 :: créationcréation dede lala 11èreère cartecarte graphiquegraphique•• 19871987 :: créationcréation dede lala 11èreère cartecarte graphiquegraphique•• 1987 :1987 : MarchingMarching Cubes : A HighCubes : A High ResolutionResolution 3D Surface3D SurfaceConstructionConstruction AlgorithmAlgorithm, par, par LorensenLorensen etet ClineCline (GE)(GE)•• 19921992 :: OpenGLOpenGL 11..00•• 19931993 :: créationcréation dede NVIDIANVIDIA•• 19931993 :: JurassicJurassic parkpark•• 19941994 :: standardstandard VRMLVRML•• 19961996 :: MicrosoftMicrosoft lancelance DirectXDirectX•• 19971997 :: SunSun lancelance JavaJava 33DD•• 19981998 :: logiciellogiciel AliasAlias MayaMaya•• 20072007 :: SpécificationsSpécifications d’d’OpenGLOpenGL 33..00PourPour plusplus dede détailsdétails :: httphttp:://accad//accad..osuosu..edu/~waynec/history/timelineedu/~waynec/history/timeline..htmlhtml
  4. 4. Domaines d’applicationDomaines d’application•• Art & divertissementArt & divertissement• Films d’animation,Effets spéciaux• Jeux (Temps réel,• Jeux (Temps réel,Interaction)
  5. 5. Domaines d’applicationDomaines d’application•• Suivi de processus et Téléopération (online)Suivi de processus et Téléopération (online)
  6. 6. Domaines d’applicationDomaines d’application•• Simulateurs (offline)Simulateurs (offline)•• Conduite/Pilotage, Processus,Conduite/Pilotage, Processus,Téléopération, Jeux!Téléopération, Jeux!
  7. 7. Domaines d’applicationDomaines d’application•• Visualisation de donnéesVisualisation de données•• MédicalesMédicales•• GéophysiquesGéophysiques•• BiologiquesBiologiques•• BiologiquesBiologiques
  8. 8. Domaines d’applicationDomaines d’application•• Conception assistée par ordinateurConception assistée par ordinateur•• Immersive ou pasImmersive ou pas
  9. 9. DéfinitionsDéfinitions•• DéfinitionDéfinition officielleofficielle dede l’infographiel’infographie (office(office dede lala languelanguefrançaisefrançaise•• «« ApplicationApplication dede l’informatiquel’informatique àà lala création,création, auau traitement,traitement,•• «« ApplicationApplication dede l’informatiquel’informatique àà lala création,création, auau traitement,traitement,etet àà l’exploitationl’exploitation desdes imagesimages numériquesnumériques »»•• InfographieInfographie estest unun motmot forméformé àà partirpartir dede d’d’INFOrmatiqueINFOrmatiqueetet GRAPHIqueGRAPHIque•• AppellationAppellation déposéedéposée parpar lala sociétésociété BensonBenson enen 19741974
  10. 10. •• LaLa géométriegéométrie estest l’élémentl’élément constitutifconstitutif essentielessentiel dede toutetoute imageimage dede synthèsesynthèse•• LesLes objetsobjets présentsprésents dansdans uneune imageimage dede synthèsesynthèse sontsont toujourstoujours définisdéfinis àà partirpartird’objetsd’objets géométriquesgéométriques dontdont l’expressionl’expression mathématiquemathématique estest connueconnue..DéfinitionsDéfinitionsd’objetsd’objets géométriquesgéométriques dontdont l’expressionl’expression mathématiquemathématique estest connueconnue..•• CesCes objetsobjets ainsiainsi queque l’organisationl’organisation spatialespatiale dede cesces objetsobjets lesles unsuns parpar rapportrapport auxauxautresautres formentforment unun modèlemodèle géométriquegéométrique completcomplet dede lala scènescène virtuellevirtuelle àà représenterreprésenteretet constituentconstituent unun prépré--requisrequis essentielessentiel..•• L’imageL’image dede synthèsesynthèse obtenueobtenue estest lele résultatrésultat dede l’interactionl’interaction entreentre lesles différentesdifférentessourcessources dede lumièrelumière dede lala scènescène etet lesles objetobjet.. CetteCette interactioninteraction s’évalues’évalue àà partirpartir desdescaractéristiquescaractéristiques physiquesphysiques desdes objetsobjets etet desdes sourcessources dede lumières,lumières, etet desdes propriétéspropriétésgéométriquesgéométriques localeslocales enen touttout pointpoint dede lala scènescène (géométrie(géométrie locale)locale) etet globalesglobales(chaque(chaque objetobjet interagitinteragit avecavec uneune partiepartie ouou lala totalitétotalité dede lala scène)scène)..
  11. 11. Pipeline GraphiquePipeline Graphique
  12. 12. Pipeline GraphiquePipeline GraphiqueTransformations demodélisationIllumination(Shading)TransformationsModèle de laModèle de lascènescèneTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage Image 3DImage 3D
  13. 13. Transformations de modélisationTransformations de modélisation•Application des transformations decomposition de scène : Passage dusystème de coordonnées local dechaque objet 3D (object space) versTransformations demodélisationIllumination(Shading)Transformationschaque objet 3D (object space) versun repère global (world space)Object space World spaceTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  14. 14. IlluminationIllumination•Les primitives sont éclairées selonleur matériau, le type de surface et lessources de lumière.•Les modèles d’illumination sontTransformations demodélisationIllumination(Shading)Transformations •Les modèles d’illumination sontlocaux (pas d’ombres) car le calcul esteffectué par primitive : diffus, ambiant,Gouraud, Phong, etc.Transformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  15. 15. Transformations d’affichageTransformations d’affichage•Passe des coordonnées du monde àcelles du point de vue (repère caméra oueye space).•En général le repère est aligné selon z.Transformations demodélisationIllumination(Shading)TransformationsThe image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.Eye spaceWorld spaceTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  16. 16. ClippingClipping•Passage en coordonnées normalisées(NDC : normalized device coordinates)Transformations demodélisationIllumination(Shading)TransformationsEye space NDC•Suppression des parties hors duvolume de vision.Transformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  17. 17. Transformation écranTransformation écran•Les primitives 3D sont projetées surlespace image 2D (screen space)Transformations demodélisationIllumination(Shading)TransformationsNDCScreenSpaceTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  18. 18. RasterisationRasterisation•Découpe des primitives 2D en pixels•Interpole les valeurs connues auxsommets : couleur, profondeur, etc.pour chaque fragment affichéTransformations demodélisationIllumination(Shading)Transformations pour chaque fragment affichéTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  19. 19. Visibilité et affichageVisibilité et affichage•Élimination des parties cachées•Remplissage du frame buffer avec lebon format de couleur.Transformations demodélisationIllumination(Shading)TransformationsTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  20. 20. Système de coordonnéesSystème de coordonnéesRepère objetRepère scèneTransformations demodélisationIllumination(Shading)TransformationsRepère caméraEspace écranRepère caméranormalisé (NDC)Transformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  21. 21. Le pipeline graphiqueLe pipeline graphique•Modèle géométrique : objets,surfaces, sources de lumière…•Modèle d’illumination : calcul desinteractions lumineusesTransformations demodélisationIllumination(Shading)Transformations•Caméra : point de vue etouverture (frustum)•Fenêtre (viewport) : grille de pixelsur laquelle on plaque l’image•Couleurs, intensités convenant àl’afficheur (ex : 24 bits, RVB)Transformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  22. 22. Le pipeline graphiqueLe pipeline graphique•Chaque primitive passesuccessivement par toutes les étapes•Le pipeline peut être implémenté deTransformations demodélisationIllumination(Shading)Transformations•Le pipeline peut être implémenté dediverses manières avec des étapes enhardware et d’autres en software•A certaines étapes on peut disposerd’outils de programmation (ex : vertexou pixel program)Transformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  23. 23. ImplémentationImplémentationTransformations demodélisationIllumination(Shading)TransformationsSoftwareconfigurableSans carte graphique 3DTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  24. 24. ImplémentationImplémentationTransformations demodélisationIllumination(Shading)Transformations SoftwareconfigurableHardwareCartes graphiquespremière générationTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichageconfigurable
  25. 25. ImplémentationImplémentationTransformations demodélisationIllumination(Shading)TransformationsCartes graphiquesdeuxième générationTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / AffichageHardwareconfigurable
  26. 26. ImplémentationImplémentationTransformations demodélisationIllumination(Shading)TransformationsCartes graphiquestroisième générationTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / AffichageHardwareprogrammable
  27. 27. Rappels mathématiquesRappels mathématiques
  28. 28. ScalaireScalaire•• Un scalaire est une grandeur totalement définie par un nombreUn scalaire est une grandeur totalement définie par un nombreet une unité.et une unité.•• Il a une valeur numérique mais pas dorientation.Il a une valeur numérique mais pas dorientation.•• Ex :Ex :•• Ex :Ex :•• MasseMasse•• DistanceDistance•• TempératureTempérature•• VolumeVolume•• DensitéDensité•• Etc.Etc.•• Les scalaires obéissent aux lois de lalgèbre ordinaireLes scalaires obéissent aux lois de lalgèbre ordinaire
  29. 29. ScalaireScalaire•• Opérations élémentaires:Opérations élémentaires:•• Addition & multiplicationAddition & multiplication•• PropriétésPropriétés•• CommutativitéCommutativitéαββααββα⋅=⋅+=+•• AssociativitéAssociativité•• DistributivitéDistributivité•• IdentitéIdentité•• Addition : 0Addition : 0•• Multiplication : 1Multiplication : 1αββα ⋅=⋅( ) ( )( ) ( ) γβαγβαγβαγβα⋅⋅=⋅⋅++=++( ) ( ) ( )γαβαγβα ⋅+⋅=+⋅ααα =+=+ 00ααα =⋅=⋅ 11
  30. 30. VecteurVecteur•• Un vecteurUn vecteur est une entité mathématique définie par n valeurs numériquesest une entité mathématique définie par n valeurs numériquesextraites du même ensemble E (par exemple N, Z, R, C,…)extraites du même ensemble E (par exemple N, Z, R, C,…)•• Ces valeurs numériques décrivent le moduleCes valeurs numériques décrivent le module et lorientation du vecteuret lorientation du vecteur•• n est appelé la dimension du vecteur.n est appelé la dimension du vecteur.On dit que le vecteur est défini dans En.On dit que le vecteur est défini dans En.•• On dit que le vecteur est défini dans En.On dit que le vecteur est défini dans En.•• En est un espace de dimension n.En est un espace de dimension n.•• Exemple : dans Z2 , dans R3.Exemple : dans Z2 , dans R3.•• Ex :Ex :•• DéplacementDéplacement•• VitesseVitesse•• AccélérationAccélération•• ForceForce32RZzyxyx
  31. 31. Vecteurs unitairesVecteurs unitaires•• Dans un repère les vecteurs sont décrit dans une base (unités de l’ensemble)Dans un repère les vecteurs sont décrit dans une base (unités de l’ensemble)•• généralement unitairegénéralement unitaire•• Le vecteur est représenté par l’addition des vecteurs unitaires à chaque axeLe vecteur est représenté par l’addition des vecteurs unitaires à chaque axede coordonnées, en multipliant chacun par la projection (composante)de coordonnées, en multipliant chacun par la projection (composante)respective du vecteur.respective du vecteur.respective du vecteur.respective du vecteur.kzjyixVrrrr ++=
  32. 32. VecteurVecteur•• Les vecteurs obéissent aux lois de lalgèbre vectorielleLes vecteurs obéissent aux lois de lalgèbre vectorielle•• Opérations élémentairesOpérations élémentaires•• Produit scalaireProduit scalaire•• Produit vectorielProduit vectoriel•• Produit vectorielProduit vectoriel•• Addition de vecteursAddition de vecteurs•• Produit vecteurProduit vecteur--scalairescalaire•• NormalisationNormalisation
  33. 33. Produit scalaireProduit scalaire• Le produit scalaire de deux vecteurs est le produit du module du premier parla composante du second dans la direction du premierBrBrθcosA•• Produit scalaire en fonctionProduit scalaire en fonction•• du module et de l’angle :du module et de l’angle :•• des composantes :des composantes :ArθArθθcosBθcos. BABA =rrzzyyxx BABABABA ++=rr.
  34. 34. Produit scalaireProduit scalaire•• Propriétés :Propriétés :•• CommutativitéCommutativitéDistributivitéDistributivité par l’additionpar l’addition wvwuwvu ...)( +=+uvvu .. =•• DistributivitéDistributivité par l’additionpar l’addition•• Distributivité par un scalaireDistributivité par un scalairewvwuwvu ...)( +=+).()(. vukvku ×=×
  35. 35. Produit scalaireProduit scalaire•• Angle entre deux vecteursAngle entre deux vecteursθcos. BABArrrr=zzyyxx BABABABA ++=rr. BABABABA zzyyxxrr++=⇒ θcos•• Signe du produit scalaireSigne du produit scalairezzyyxx BABABABA ++=.°<<°−⇒> 90900. θBArr°±=⇒= 900. θBArr°<<°°−<<°−⇒< 18090901800. θθ ouBArr
  36. 36. Produit scalaireProduit scalaire•• ApplicationApplication•• Projection d’un vecteur sur un autreProjection d’un vecteur sur un autre•• Élimination des faces cachéesÉlimination des faces cachées•• Calcul d’angle entre deux vecteursCalcul d’angle entre deux vecteurs•• Calcul de la quantité de lumière perçue par une faceCalcul de la quantité de lumière perçue par une face•• OmbrageOmbrage•• Etc.Etc.
  37. 37. Produit vectorielProduit vectoriel• Le module du produit vectoriel dedeux vecteurs est le produit du moduledu premier par la composante dusecond qui est perpendiculaire aupremier.θθθrrrrrrrr===×ArBrθθsinBArBrθθsinA• Le produit vectoriel est un vecteurperpendiculaire à A et à B dont lesens est donné par la règle de lamain droite.• Le produit vectoriel est nul si les deuxvecteur sont parallèles et maximal s’ils sontperpendiculaires.θθθ sin)sin()sin( BAABBABArrrrrrrr===×nuBABArrrrr)sin( θ=× ArBrθBArr×nur
  38. 38. Produit vectoriel en fonction des composantes:Produit vectorielProduit vectorielyxyxzxzxzyzyzyxBBAAkBBAAjBBAAiBBBAAAkjiBArrrrrrrr+−+==×( ) ( )( ) ( )( ) ( )( ):2 4 1 4 1 21 2 41 5 3 5 3 13 1 52 5 1 4 1 5 3 4 1 1 3 26 17 7Exemplei j kA B i j kA B i j kA B i j k− −× = − = + − +− −−× = × − − × − − × − × − + × − − ×× = − −rr rrr r r rrr r r rrr r r ryxzxzyzyx BBB)()()( yxyxzxzxzyzy ABBAkABBAjABBAiBA −+−−−=×rrrrr
  39. 39. Produit vectorielProduit vectoriel•• PropriétésPropriétés•• AnticommutativitéAnticommutativité•• Distributivité sur ladditionDistributivité sur laddition)()( uvvu ×−=×wvwuwvu ×+×=×+ )(•• Distributivité sur ladditionDistributivité sur laddition•• Distributivité par un scalaireDistributivité par un scalaire•• NonNon--associativitéassociativitéwvwuwvu ×+×=×+ )(kvkukvu ...)( +=+)()( wvuwvu ××≠××
  40. 40. Produit vectorielProduit vectoriel•• ApplicationApplication•• Calcul de la normale à un planCalcul de la normale à un plan
  41. 41. Addition de deux vecteursAddition de deux vecteurs•• L’addition de deux vecteurs obéit à la règle du parallélogramme.L’addition de deux vecteurs obéit à la règle du parallélogramme.ArBArr+•• Algébriquement cela se met en oeuvre en additionnant lesAlgébriquement cela se met en oeuvre en additionnant lescomposantes individuellement.composantes individuellement.BrkbjbibBkajaiaAzyxzyxrrrrrrrr++=++=kbajbaibaBA zzyyxxrrrrr)()()( +++++=+
  42. 42. Addition de deux vecteursAddition de deux vecteursUn vecteur A peut être décomposé en sescomposantes rectangulaires Ax et Ay.cossinx Ay AA AA Aθθ==Il est possible d’additionner des vecteurs enadditionnant les composantes de ces vecteur.2 2cos sincos sinx A y Ax B y Bx x x y y yyx y RxA A A AB B B BR A B R A BRR R R tgRθ θθ θθ= == == + = += + =
  43. 43. NormeNorme•• La norme d’un vecteur est sa taille.La norme d’un vecteur est sa taille.•• Cette taille est calculée par le théorème de Pythagore, puisque les composantesCette taille est calculée par le théorème de Pythagore, puisque les composantesd’un vecteur forment toujours des triangles rectangles deux à deux.d’un vecteur forment toujours des triangles rectangles deux à deux.jyixVrrr +=•• Pour la dimension n on applique le même principe, en faisant que les deux côtés duPour la dimension n on applique le même principe, en faisant que les deux côtés dutriangle rectangle soient les projections du vecteur dans un soustriangle rectangle soient les projections du vecteur dans un sous--espace de dimensionespace de dimensionnn––1 et dans l’axe de la dimension manquante.1 et dans l’axe de la dimension manquante.•• La norme dun vecteur AB est la distance de A à BLa norme dun vecteur AB est la distance de A à BixrjyrVr22)()( yxV +=r222)()()( zyxV ++=r
  44. 44. Normalisation d’un vecteurNormalisation d’un vecteur•• La normalisation fait qu’un vecteur devienne unitaire, c’estLa normalisation fait qu’un vecteur devienne unitaire, c’est--àà--dire, avecdire, avecla norme 1.la norme 1.•• Pour normaliser un vecteur il suffit de diviser toutes ses composantesPour normaliser un vecteur il suffit de diviser toutes ses composantespar sa norme.par sa norme.222)()()(zyxkzjyixVV++++=rrrrr))()()(,)()()(,)()()((222222222zyxzzyxyzyxxVn++++++=r)()()( zyxV ++VrnVrnVVVrrr.=
  45. 45. MatriceMatrice•• On appelle matrice M un tableau à deux indices de n*m valeursOn appelle matrice M un tableau à deux indices de n*m valeursnumériques extraites du même ensemble E.numériques extraites du même ensemble E.mmmmmmmmmm 1514131211•• Exemple :Exemple : n = 4, m = 5.n = 4, m = 5.•• Usuellement n et m sont le nombre de lignes et le nombre de colonnesUsuellement n et m sont le nombre de lignes et le nombre de colonnesde la matrice.de la matrice.•• Si n = m la matrice est dite carrée.Si n = m la matrice est dite carrée.Rmmmmmmmmmmmmmmm 444443424134343332312424232221
  46. 46. MatriceMatrice•• Opération possibleOpération possible•• AdditionAddition•• MatriceMatrice--matricematrice•• ScalaireScalaire--matricematriceMultiplicationMultiplication•• MultiplicationMultiplication•• MatriceMatrice--matricematrice•• MatriceMatrice--vecteurvecteur•• ScalaireScalaire--matricematrice•• InversionInversion•• TranspositionTransposition
  47. 47. Produit matrice par vecteurProduit matrice par vecteur•• Soient :Soient :•• un vecteur de dimension n (vi, 1 <= i <= n)un vecteur de dimension n (vi, 1 <= i <= n)•• une matrice carrée de dimension m x n (mij, 1 <= i <= m, 1 <= j <= n).une matrice carrée de dimension m x n (mij, 1 <= i <= m, 1 <= j <= n).•• Le vecteur produit de par est :Le vecteur produit de par est :•• On calcule le produit de chaque ligne de la matrice par le vecteur colonne.On calcule le produit de chaque ligne de la matrice par le vecteur colonne.VMWrr.=WrM VrVrM•• On calcule le produit de chaque ligne de la matrice par le vecteur colonne.On calcule le produit de chaque ligne de la matrice par le vecteur colonne.nivmwnk kiki ≤≤=∑ =1.1m x nm x n n x 1n x 1 m x 1m x 1
  48. 48. Produit matrice par vecteurProduit matrice par vecteur•• ExempleExemple
  49. 49. Produit matrice par matriceProduit matrice par matrice•• Soient deux matrices et de dimensions respectives :Soient deux matrices et de dimensions respectives :•• n x m (m1ij, 1 <= i <= n, 1 <= j <= m)n x m (m1ij, 1 <= i <= n, 1 <= j <= m)•• m x p (m2ij, 1 <= i <= m, 1 <= j <= p)m x p (m2ij, 1 <= i <= m, 1 <= j <= p)•• La matrice M produit de M1 par M2 est de dimension n x p est calculée par la formuleLa matrice M produit de M1 par M2 est de dimension n x p est calculée par la formulesuivante :suivante :1M 2Msuivante :suivante :)1,1(2.11pjnimmmmk kjikij ≤≤≤≤=∑ =n x mn x m m x pm x p n x pn x p
  50. 50. Produit matrice par matriceProduit matrice par matrice•• ExempleExemple
  51. 51. Espace vectorielEspace vectoriel -- Espace affineEspace affine•• UnUn espaceespace vectorielvectoriel estest l’espacel’espace oùoù viventvivent lesles vecteursvecteurs (déplacements(déplacements ououdirections)directions).. SesSes principalesprincipales propriétéspropriétés sontsont l’existencel’existence d’und’un vecteurvecteur nulnul etet lala stastabilitébilité dede l’espacel’espace pourpour toutetoute combinaisoncombinaison linéairelinéaire dede vecteursvecteurs..bilitébilité dede l’espacel’espace pourpour toutetoute combinaisoncombinaison linéairelinéaire dede vecteursvecteurs..•• UnUn espaceespace affineaffine estest l’espacel’espace dansdans lequellequel viventvivent lesles pointspoints àà partirpartir desquelsdesquelsonon définitdéfinit lesles objetsobjets géométriquesgéométriques usuelsusuels (droites,(droites, ......)).. IlIl sese construitconstruit àà partirpartird’und’un pointpoint dede référenceréférence (l’origine)(l’origine) etet d’und’un espaceespace vectorielvectoriel (déplacements(déplacementsautorisésautorisés àà partirpartir dede cece point)point)..
  52. 52. TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitudeHomothétieisotrope HomothétieReflectionPerspectiveIdentité
  53. 53. TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitudeHomothétieisotrope HomothétieReflectionPerspectiveIdentité
  54. 54. TransformationsTransformations•• Transformations Euclidiennes rigides : 6 DDLTransformations Euclidiennes rigides : 6 DDL•• Rotation (3DDL), Translation (3DDL).Rotation (3DDL), Translation (3DDL).•• PropriétésPropriétésPréservent les angles.Préservent les angles.•• Préservent les angles.Préservent les angles.•• Préservent les distances.Préservent les distances.
  55. 55. TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitudeHomothétieisotrope HomothétieReflectionPerspectiveIdentité
  56. 56. TransformationsTransformations•• Similitudes : 7 DDLSimilitudes : 7 DDL•• Rotation (3DDL), Translation (3DDL), HomothétieRotation (3DDL), Translation (3DDL), Homothétieisotrope (1DDL)isotrope (1DDL)•• PropriétésPropriétés•• Préservent les anglesPréservent les angles•• Préservent les anglesPréservent les angles•• Préservent lPréservent les rapports de longueurs•• PréserventPréservent les rapports de surfaces•• Préservent lPréservent le parallélisme• Préservent les formes (un cercle reste un cercle, uncarré reste un carré, etc.)• Généralisation des transformations Euclidienneset Homothétie
  57. 57. TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitudeHomothétieisotrope HomothétieReflectionPerspectiveIdentité
  58. 58. TransformationsTransformations•• Transformations linéaires : 9DDLTransformations linéaires : 9DDL•• Rotation (3DDL), Homothétie (3DDL),Rotation (3DDL), Homothétie (3DDL), ReflectionReflection (3DDL)(3DDL)•• PropriétésPropriétés• Préservent les rapports de longueurs sur une droite• Préservent les parallèles• Préservent le centre de gravité• Préservent le plan à l’infini• Préservent le rapports d’aire•• Transformations dans espace vectorielTransformations dans espace vectoriel
  59. 59. TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitudeHomothétieisotrope HomothétieReflectionPerspectiveIdentité
  60. 60. TransformationsTransformations• Transformations affines : 12 DDL•• Rotation (3DDL), Translation (3DDL), Homothétie (3DDL),Rotation (3DDL), Translation (3DDL), Homothétie (3DDL), ReflectionReflection(3DDL)(3DDL)• PropriétésPréservent les rapports de longueurs sur une droite• Préservent les rapports de longueurs sur une droite• Préservent les parallèles• Préservent le centre de gravité• Préservent le plan à l’infini• Préservent le rapports d’aire• Transformation dans un espace affine
  61. 61. TransformationsTransformationsLinéaireAffineProjectiveSimilitudeTranslation RotationRigide / EuclidienneLinéaireSimilitudeHomothétieisotrope HomothétieReflectionPerspectiveIdentité
  62. 62. TransformationsTransformations•• Transformations projectives ou homographie : 15 DDLTransformations projectives ou homographie : 15 DDL•• Rotation (3DDL), Translation (3DDL), Homothétie (3DDL),Rotation (3DDL), Translation (3DDL), Homothétie (3DDL), ReflectionReflection (3DD(3DDL), Projection (3DDL)L), Projection (3DDL)•• PropriétésPropriétés•• Préservent les droites (Colinéarité)Préservent les droites (Colinéarité)Préservent les droites (Colinéarité)Préservent les droites (Colinéarité)•• Préservent le birapportPréservent le birapport•• Préservent les intersectionsPréservent les intersections•• Préservent l’incidencePréservent l’incidence
  63. 63. Transformations de modélisationTransformations de modélisation•Application des transformations decomposition de scène : Passage dusystème de coordonnées local dechaque objet 3D (object space) versTransformations demodélisationIllumination(Shading)Transformationschaque objet 3D (object space) versun repère global (world space)Object space World spaceTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  64. 64. Les transformations élémentairesLes transformations élémentairesLes transformations élémentairesLes transformations élémentaires
  65. 65. TransformationsTransformations•• Utilisations :Utilisations :•• Déplacement dun objet dans une scèneDéplacement dun objet dans une scène•• Déplacement dun observateur par rapport a une scèneDéplacement dun observateur par rapport a une scène•• Réplication dun motif ou dun objetRéplication dun motif ou dun objet•• Déformation dun objetDéformation dun objet•• ProjectionProjection•• etc.etc.
  66. 66. TransformationsTransformations•• Un objet est décrit par un ensemble de sommetsUn objet est décrit par un ensemble de sommets•• Appliquer une transformation à un objet revient à l’appliquer à tousAppliquer une transformation à un objet revient à l’appliquer à tousses sommetsses sommetsT+RT+R
  67. 67. TransformationsTransformations•• On utilise la notation vectorielleOn utilise la notation vectorielle•• Les sommets sont représentés sous forme de vecteursLes sommets sont représentés sous forme de vecteurs= iii yxp=iiizyp
  68. 68. TransformationsTransformations•• Translation :Translation :•• Ajouter aux coordonnées du sommet la valeur de la translationAjouter aux coordonnées du sommet la valeur de la translationixiyTyxTx+=+=•• Notation matricielleNotation matricielle•• Addition du vecteur de translationAddition du vecteur de translation+=iiizyxiiizyxTTTzyxiziiyizTzyTy+=+=Tp(x,y)p’(x’,y’)TxTy
  69. 69. TransformationsTransformations•• Rotation par rapport à l’origine autour de l’axe ZRotation par rapport à l’origine autour de l’axe Z•• Calcul à l’aide de l’algèbre vectorielleCalcul à l’aide de l’algèbre vectorielleziziiyxyyxx−=−=cos.sin.sin.cos.θθθθzθ•• Notation matricielleNotation matricielle•• Multiplication par la matrice de rotationMultiplication par la matrice de rotationiiziziizzyxy=−=cos.sin. θθ −=iiizzzziiizyxzyx1000cossin0sincosθθθθp(x,y)p’(x’,y’)xx’y’yθz
  70. 70. TransformationsTransformations•• HomothétieHomothétie•• Multiplication par les facteurs d’échellesMultiplication par les facteurs d’échellesiyiixiySyxSx..==•• Notation matricielleNotation matricielle•• Multiplication par la matrice d’HomothétieMultiplication par la matrice d’Homothétie=iiizyxiiizyxSSSzyx000000izi zSz . =p(x,y)p’(x’,y’)xSx. xSy. yy
  71. 71. TransformationsTransformations•• La notation matricielleLa notation matricielle•• Permet une notation simple, concisePermet une notation simple, concise•• Mais pas vraiment unifiéeMais pas vraiment unifiée•• Addition ou bien multiplication en fonction de la transformation (traAddition ou bien multiplication en fonction de la transformation (translation, rotation…)nslation, rotation…)nslation, rotation…)nslation, rotation…)•• On veut une notation uniqueOn veut une notation unique•• concaténer plusieurs transformationsconcaténer plusieurs transformations•• permette de noter aussi les combinaisons de transformationspermette de noter aussi les combinaisons de transformations
  72. 72. Coordonnées homogènesCoordonnées homogènes•• LesLes coordonnéescoordonnées homogèneshomogènes sontsont utiliséesutilisées enen synthèsesynthèse dimagedimage afinafin dunifierdunifier lele traitementtraitement desdestransformationstransformations géométriquesgéométriques dunedune scènescène etet dede lesles regrouperregrouper dansdans uneune seuleseule matricematrice.. EnEn effet,effet,sisi lonlon utiliseutilise uneune matricematrice 22**22 pourpour lesles scènesscènes bidimensionnellesbidimensionnelles etet uneune matricematrice 33**33 pourpour leslesscènesscènes tridimensionnelles,tridimensionnelles, cesces matricesmatrices nene peuventpeuvent exprimerexprimer queque desdes rotationsrotations..•• PourPour exprimerexprimer aussiaussi lesles translations,translations, lesles changementschangements déchelledéchelle etet lesles projections,projections, onon vava utiliserutiliserdesdes matricesmatrices 44**44 pourpour lesles scènesscènes tridimensionnellestridimensionnelles..•• OnOn rajouterajoute égalementégalement uneune 44èmeème coordonnéescoordonnées auxaux pointspoints manipulésmanipulés ww ((ww==11)) :: ((x,y,z,x,y,z,ww))3x33x31x31x33x13x11x11x1RotationRotationet changementet changementd’échelled’échelle PerspectivePerspective HomothétieHomothétie TranslationTranslation
  73. 73. Coordonnées homogènesCoordonnées homogènes•• Ainsi, si (x,y,z) sont les coordonnées dun point de la scène à transformer etAinsi, si (x,y,z) sont les coordonnées dun point de la scène à transformer et MMHHla matrice 4*4 de coordonnées homogènes, on effectuera la multiplication :la matrice 4*4 de coordonnées homogènes, on effectuera la multiplication :MMHH ** [[ x y zx y z 11 ]][[•• Ce qui donnera comme résultatCe qui donnera comme résultat [[X Y Z HX Y Z H ].].•• Les coordonnées du point transformé seront alors (Les coordonnées du point transformé seront alors (x’ y’ z’) =x’ y’ z’) = ((X/H,Y/H,Z/HX/H,Y/H,Z/H).).•• La matrice 4*4 des coordonnées homogènes peut être considérée commeLa matrice 4*4 des coordonnées homogènes peut être considérée commeétant composée de 4 sousétant composée de 4 sous--matrices, chacune delle étant associée à un typematrices, chacune delle étant associée à un typede transformation.de transformation.
  74. 74. Manipulations géométriquesManipulations géométriques•• Soit un pointSoit un point•• Soit une transformation géométrique définie par la matrice donnée en coordonnéeSoit une transformation géométrique définie par la matrice donnée en coordonnées homogènes.s homogènes.•• Le Point transformé de par la matrice est :Le Point transformé de par la matrice est :pMp M pMp .=•• Le Point transformé de par la matrice est :Le Point transformé de par la matrice est :•• Transformations :Transformations :•• TranslationTranslation•• RotationRotation•• Changements d’échelleChangements d’échelle•• SymétriesSymétries•• ProjectionProjection•• Affinités orthogonalesAffinités orthogonales•• etc.etc.p M pMp .=
  75. 75. TranslationsTranslations==××1010001000131133 TITTTTzyx 1000PTzTyTxTzyxTTTPTPzyxzyx+=+++===11.1000100010001.
  76. 76. Rotations (angles d’Euler)Rotations (angles d’Euler)==×××1001000000311333333231232221131211RRRRRRRRRRR −−−==1000010000cossin00sincos.10000cos0sin00100sin0cos.10000cossin00sincos00001.. zzzzyyyyxxxxzyx RRRRθθθθθθθθθθθθ==1.1000000.333231232221131211zyxRRRRRRRRRPRP
  77. 77. Rotations (angles d’Euler)Rotations (angles d’Euler)•• Règles pour la construction de la matrice de rotation d’angleRègles pour la construction de la matrice de rotation d’angle Ө• Ligne 1 associée à x, ligne 2 à y et ligne 3 à z• 1 sur la diagonale pour l’axe de rotation et la coordonnéehomogénecos(Ө) sur la diagonale pour les deux autres axes• cos(Ө) sur la diagonale pour les deux autres axes• sin(Ө) sur les diagonales supérieure et inférieure pour“compléter le carr锕 Sur la ligne suivant celle de l’axe de rotation, le sinus est précédéd’un signe ‘-’
  78. 78. Homothétie isotropeHomothétie isotrope==×××1001000000000000311333SSSSR 1000PSzSySxSzyxSSSPSP .1...1.1000000000000. ====
  79. 79. Homothétie : Affinités orthogonalesHomothétie : Affinités orthogonales==×××1001000000000000311333SSSSRzyxxSxS .000 PSzSySxSzyxSSSPSPzyxzyx.1...1.1000000000000. ====100001000010000xS100000000100001zS100001000000001ySAffinité daxe x par rapportAffinité daxe x par rapportau plan yOzau plan yOzAffinité daxe y par rapportAffinité daxe y par rapportau plan xOzau plan xOzAffinité daxe z par rapportAffinité daxe z par rapportau plan xOyau plan xOy
  80. 80. GlissementGlissement•• Appelée aussiAppelée aussi shearshear ou cisaillement : étirement suivant un axeou cisaillement : étirement suivant un axe•• La matrice dun glissement parallèle à x et de rapport k est :La matrice dun glissement parallèle à x et de rapport k est :01000010001 k•• La matrice dun glissement parallèle à x, de rapport k et de ligne de base y = yLa matrice dun glissement parallèle à x, de rapport k et de ligne de base y = yrefref est :est : 10000100 −1000010000100.1 refykkrefy
  81. 81. Composition de Transformations
  82. 82. (0,0)(1,1)(2,2)(0,0)(5,3)(3,1)Scale(2,2) Translate(3,1)Composition de TransformationsExemple :Exemple :(0,0) (0,0)Multiplication de matrices :Multiplication de matrices : pp == TT .(.( SS ..pp ) = T.S .) = T.S .pp==100120302100020002.100110301.ST
  83. 83. homothétie puis translation : p = T .(S .p ) = T.S .p(1,1)(2,2)(5,3)(3,1)Scale(2,2) Translate(3,1)Non-commutatifComposition de Transformationstranslation puis homothétie : p = S. (T .p ) = S.T .p(0,0)(1,1)(4,2)(3,1)(8,4)(6,2)(0,0)(1,1)(0,0)(3,1)Scale(2,2) Translate(3,1)Translate(3,1) Scale(2,2)
  84. 84. ==100120302100020002.100110301)2,2().1,3( STComposition de Transformations==100220602100110301.100020002)1,3().2,2(100100100TS
  85. 85. p’ = M . p et p" = M’. p’=>Cas généralComposition de Transformations=>p" = M’ . M . poup" = M" . p avec M" = M’ . M
  86. 86. Ordre d’ApplicationComposition de Transformationsp" = M’ . M . p => M puis M’On applique M à P, puis M’ au résultat :On applique M à P, puis M’ au résultat :l’ordre dl’ordre d ’application des transformations se lit de’application des transformations se lit dedroite à gauchedroite à gauche, et non dans le sens de la lecture, et non dans le sens de la lecture
  87. 87. Composition de Transformations•• Les transformations élémentaires sont définies parLes transformations élémentaires sont définies parrapport à l’origine du repère de la scènerapport à l’origine du repère de la scène•• Pour se placer d’un points quelconque , on doit :Pour se placer d’un points quelconque , on doit :1.1.Revenir à l’origine du repère (translation) : TRevenir à l’origine du repère (translation) : TPP-->O>O1.1.Revenir à l’origine du repère (translation) : TRevenir à l’origine du repère (translation) : TPP-->O>O2.2.Faire la(les) transformation(s) voulue(s)Faire la(les) transformation(s) voulue(s)3.3.Se remettre au point de départ (translation) : TSe remettre au point de départ (translation) : TOO-->P>P
  88. 88. Exemple 1 :On désire établir la transformation consistant à effectuer unerotation de Өz radians autour de laxe colinéaire à z passantpar le point P de coordonnées (Tx,Ty,Tz).Composition de Transformationspar le point P de coordonnées (Tx,Ty,Tz).ZZXXYYR(θz)
  89. 89. Cette transformation M est réalisée en amenant p à lorigine par unetranslation T de -p, puis en effectuant une rotation R dangle Өz autour delaxe Oz, et enfin en ramenant p à sa position initiale par une translation Tde p :p’ = (T(x,y,z) . R(θz) . T(-x,-y,-z) ) . p = M . pComposition de TransformationsZZXXYY( z )ZZXXYYT(-x,-y,-z)T(x,y,z)R(θz)
  90. 90. Composition de Transformations−−− −=1000100010001.1000010000cossin00sincos.1000100010001zyxzzzzzyxTTTTTTMθθθθ++−++−−=−+−+−−=10000100cossin0cossinsincos0sincos1000100cossin0cossinsincos0sincos.1000100010001100010001000yzyzxzzxzyzxzzzzyzxzzzyzxzzzyxTTTTTTMTTTTTTTTMθθθθθθθθθθθθθθθθ
  91. 91. Composition de Transformations•• Les compositions de transformations servent àLes compositions de transformations servent àDécrire une hiérarchie de transformations : graphe de scèneDécrire une hiérarchie de transformations : graphe de scène•• Décrire une hiérarchie de transformations : graphe de scèneDécrire une hiérarchie de transformations : graphe de scène•• Changement de repèreChangement de repère
  92. 92. Modélisation hiérarchiqueModélisation hiérarchique•• Un modèle hiérarchique permet de décrire facilement desUn modèle hiérarchique permet de décrire facilement desobjets complexes composés d’objets simplesobjets complexes composés d’objets simples•• La scène est organisée dans un arbreLa scène est organisée dans un arbre•• Les objets ne sont plus définis par leur transformation absolueLes objets ne sont plus définis par leur transformation absoluepar rapport au repère global, mais par leur transformationpar rapport au repère global, mais par leur transformationpar rapport au repère global, mais par leur transformationpar rapport au repère global, mais par leur transformationrelative dans cet arbre :relative dans cet arbre :•• Le repère associé à la racine est le repère de la scèneLe repère associé à la racine est le repère de la scène•• A chaque nœud est associé un repèreA chaque nœud est associé un repère•• A chaque arc est associée une transformation géométrique qui poA chaque arc est associée une transformation géométrique qui positionne l’objet fils dans le repère de son pèresitionne l’objet fils dans le repère de son père•• Un objet peut être inclus plusieurs fois dans la hiérarchie :Un objet peut être inclus plusieurs fois dans la hiérarchie :•• la structure de données est un Graphe Orienté Acyclique (DAG)la structure de données est un Graphe Orienté Acyclique (DAG)
  93. 93. Modélisation hiérarchiqueModélisation hiérarchique
  94. 94. Modélisation hiérarchiqueModélisation hiérarchique•• Construction du graphConstruction du graph•• On commence par un processus descendant ("topOn commence par un processus descendant ("top--down") dansdown") danslequel on effectue une décomposition récursive du modèlelequel on effectue une décomposition récursive du modèlegéométrique en objets plus simples jusquà aboutir à des objetsgéométrique en objets plus simples jusquà aboutir à des objetsélémentaires (primitives géométriques)élémentaires (primitives géométriques)élémentaires (primitives géométriques)élémentaires (primitives géométriques)•• On construit la chaine cinématique (graph) depuis la racine pourOn construit la chaine cinématique (graph) depuis la racine pouraboutir aux nœudsaboutir aux nœuds
  95. 95. Modélisation hiérarchiqueModélisation hiérarchiqueExemple : MaisonExemple : Maison
  96. 96. Modélisation hiérarchiqueModélisation hiérarchiqueMaisonTmTcTgFenêtre 1PorteFacadeGarage Corps PrincipalFenêtre 2 Fenêtre 3 Fenêtre 4 Fenêtre 5ToitTvaTfaTf1Vitre aTga Tgb
  97. 97. Modélisation hiérarchiqueModélisation hiérarchiqueporte a du garage Tm.Tg.TgaPile de transformationsPile de transformationsporte b du garagevitre aetc . . . .Tm.Tg.TgbTm.Tc.Tfa.Tf1.Tva
  98. 98. Changement de repèreChangement de repère•• Permet de transformer les coordonnées dun point expriméesPermet de transformer les coordonnées dun point expriméesdans un premier repère en coordonnées exprimées dansdans un premier repère en coordonnées exprimées dansdeuxième repèredeuxième repère•• Utile lorsque :Utile lorsque :•• Les objets manipulés sont définis dans des repères locauxLes objets manipulés sont définis dans des repères locaux•• Animation, modélisation, etc.Animation, modélisation, etc.•• la modélisation des caméras.la modélisation des caméras.
  99. 99. Changement de repèreChangement de repère•• Soient deux repèresSoient deux repères RR11 etet RR22•• SoitSoit MM la matrice de passage du repèrela matrice de passage du repère RR22 au repèreau repère RR11•• SoientSoient (x(x22, y, y22, z, z22, 1), 1) les coordonnées deles coordonnées de pp22 dansdans RR22•• SoientSoient (x(x11, y, y11, z, z11, 1), 1) les coordonnées deles coordonnées de pp11 dansdans RR11ZZ XXRR11ZZ11YY11XX11RR22ZZ22YY22XX22MM
  100. 100. Changement de repèreChangement de repère12 .pMp =21312111 x xTRRRx211.10001221233323123222111RzyRzyTRRRTRRRzy= →123332312322211312111000 →=zyxTRRRTRRRTRRRM
  101. 101. Changement de repèreChangement de repèreZZ11ZZ22 XX22ӨӨzz 0 RRRRR11YY11XX11RR22ZZ22YY22XX22ӨӨzzӨӨyyӨӨxx123332312322211312111000000→RRRRRRRRR
  102. 102. Changement de repèreChangement de repèreZZ11ZZ22 XX22RR11YY11XX11RR22YY22TT123332312322211312111000 →zyxTRRRTRRRTRRR
  103. 103. Changement de repèreChangement de repère•• Passage du repère R1 au repère R2Passage du repère R1 au repère R2ZZ11RR22ZZ22 XX22M’M’RR11YY11XX11RR22YY2221121 .. pMppMp −=⇒=11221.100011111333231232221131211222RzyxRzyxTRRRTRRRTRRRzyx=−→
  104. 104. La projectionLa projectionLa projectionLa projection
  105. 105. Transformation écranTransformation écran•Les primitives 3D sont projetées surlespace image 2D (screen space)Transformations demodélisationIllumination(Shading)TransformationsNDCScreenSpaceTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  106. 106. La projectionLa projection•• La projection est une réduction du nombre de dimensions.La projection est une réduction du nombre de dimensions.•• L’infographie est concernée par les projections de 3L’infographie est concernée par les projections de 3--D vers 2D vers 2--D.D.AAAABBaabb
  107. 107. XXXX•• On note que la projection dune droite en 3D est une droite en 2D.On note que la projection dune droite en 3D est une droite en 2D.•• Il est suffisant de projeter les sommets dune droite 3D et puis de tracer la droiteIl est suffisant de projeter les sommets dune droite 3D et puis de tracer la droite2D entre ces projections.2D entre ces projections.
  108. 108. La projectionLa projection•• LesLes projectionsprojections desdes objetsobjets sontsont forméesformées parpar lesles intersectionsintersections dede ligneslignesappeléesappelées projecteursprojecteurs avecavec unun planplan appeléappelé planplan dede vuevue ouou planplan dede projectionprojection..•• LesLes projecteursprojecteurs sontsont desdes ligneslignes partantpartant d’und’un pointpoint arbitrairementarbitrairement appeléappelécentrecentre dede projectionprojection (CP),(CP), enen traversanttraversant chaquechaque pointpoint d’und’un objetobjet..SiSi lesles projecteursprojecteurs sontsont desdes ligneslignes droites,droites, etet queque lele planplan dede projectionprojection estest plat,plat,•• SiSi lesles projecteursprojecteurs sontsont desdes ligneslignes droites,droites, etet queque lele planplan dede projectionprojection estest plat,plat,lala projectionprojection estest uneune projectionprojection géométriquegéométrique 22DD..ProjecteursProjecteursCentre de projectionCentre de projection(CP)(CP)Plan de projectionPlan de projection AABBaabb
  109. 109. Les projectionsLes projections•• Si le centre de projection (CP) est localisé à un point fini de l’esSi le centre de projection (CP) est localisé à un point fini de l’espace tridimensionnel, le résultat est une projection en perspectipace tridimensionnel, le résultat est une projection en perspective.ve.Si le CP est localisé à l’infini, tous les projecteurs sont parallèlesSi le CP est localisé à l’infini, tous les projecteurs sont parallèles•• Si le CP est localisé à l’infini, tous les projecteurs sont parallèlesSi le CP est localisé à l’infini, tous les projecteurs sont parallèleset le résultat est une projection parallèle.et le résultat est une projection parallèle.AABBaabbAABBaabbProjection perspectiveProjection perspective projection parallèleprojection parallèle
  110. 110. Les projectionsLes projections•• Deux familles de projections :Deux familles de projections :•• Projections parallèles.Projections parallèles.•• Projections perspectives.Projections perspectives.1 point 2 points 3 points
  111. 111. Projections parallèlesProjections parallèles•• Conditions :Conditions :•• La projection se fait dans le plan de projection suivant une direction deLa projection se fait dans le plan de projection suivant une direction deprojection (DP).projection (DP).•• Les lignes parallèles restent parallèlesLes lignes parallèles restent parallèles•• PropriétésPropriétés•• Les projections parallèles conservent les rapports des distances selon uneLes projections parallèles conservent les rapports des distances selon une•• Les projections parallèles conservent les rapports des distances selon uneLes projections parallèles conservent les rapports des distances selon unedirection donnéedirection donnée•• Pas réaliste mais peut être utilisée pour des mesures exactesPas réaliste mais peut être utilisée pour des mesures exactes•• Il existe deux types de projections parallèles dépendant du fait que la directionIl existe deux types de projections parallèles dépendant du fait que la directionde projection soit perpendiculaire au plan de projection :de projection soit perpendiculaire au plan de projection :•• Projections orthographiquesProjections orthographiques•• Projections obliquesProjections obliquesobjetobjetprojetéprojetéprojectionprojectionde l’objetde l’objetDPDP
  112. 112. Projections parallèlesProjections parallèles•• Projection orthographiqueProjection orthographique•• Projecteurs parallèles entre euxProjecteurs parallèles entre eux•• Projecteurs perpendiculaires au plan imageProjecteurs perpendiculaires au plan image•• Projection ObliqueProjection Oblique•• Projecteurs parallèles entre euxProjecteurs parallèles entre eux•• Projecteurs NON perpendiculaires au plan imageProjecteurs NON perpendiculaires au plan imagePlan de projectionPlan de projectionPlan de projectionPlan de projection
  113. 113. Projection orthographiqueProjection orthographique•• Vue de devant, d’en haut, et de côtéVue de devant, d’en haut, et de côté
  114. 114. Projection orthographiqueProjection orthographique•• La projection orthographique consiste à supprimer uneLa projection orthographique consiste à supprimer unedimensiondimension•• La dimension supprimée est celle suivant laquelle on réaliseLa dimension supprimée est celle suivant laquelle on réalisela projectionla projectionAxe de projectionAxe de projectionZZXXXXppP’P’Plan de projectionPlan de projection
  115. 115. Projection orthographiqueProjection orthographique•• Forme matricielle :Forme matricielle := . pMp PZ=1.100000000010000110zyxyx
  116. 116. Projection orthographiqueProjection orthographique•• Vues de devant, d’en haut et de côté : la projection est faite sur un deVues de devant, d’en haut et de côté : la projection est faite sur un des plans perpendiculaires aux axes des coordonnées en mettant une des plans perpendiculaires aux axes des coordonnées en mettant une des coordonnées du point à 0.s coordonnées du point à 0.===100000000010000110000100000000011000010000100000PZPYPX MMMElimination de la dimension suivant la quelle nous réalisons la projectionElimination de la dimension suivant la quelle nous réalisons la projection
  117. 117. Projection orthographiqueProjection orthographique•• Projection orthographique axonométriqueProjection orthographique axonométrique•• Le plan de projection n’est pas perpendiculaire aux axes desLe plan de projection n’est pas perpendiculaire aux axes descoordonnés, donc plusieurs facettes de l’objet sont montrées encoordonnés, donc plusieurs facettes de l’objet sont montrées enmême temps.même temps.même temps.même temps.
  118. 118. Projection obliqueProjection oblique•• Direction de la projection n’est pas perpendiculaire au planDirection de la projection n’est pas perpendiculaire au plande projectionde projection•• DP coupe le plan de projection en faisant un angle obliqueDP coupe le plan de projection en faisant un angle obliqueavec celuiavec celui--ci.ci.avec celuiavec celui--ci.ci.•• Une projection cavalière est obtenue quand l’angle est de 45ºUne projection cavalière est obtenue quand l’angle est de 45º•• Pour une projection cabinet l’angle est de 63.4º.Pour une projection cabinet l’angle est de 63.4º.•• La matrice de projection est une combinaison de transformaLa matrice de projection est une combinaison de transforma--tions d’étirement et de projection orthographique.tions d’étirement et de projection orthographique.
  119. 119. Projection obliqueProjection obliqueobjetobjetprojetéprojetéprojectionprojectionde l’objetde l’objetDPDPprojetéprojeté
  120. 120. Projection perspectiveProjection perspective
  121. 121. Projection perspectiveProjection perspective•• Réaliste : La taille de la projection d’un objet varie inversementRéaliste : La taille de la projection d’un objet varie inversementavec sa distance de CPavec sa distance de CP|ab| = d0 . 1/d . |AB|•• Ne maintient pas la forme et les mesures exactesNe maintient pas la forme et les mesures exactes•• Les projections perspectives ne conservent pas le parallélismeLes projections perspectives ne conservent pas le parallélisme•• Les projections perspectives ne conservent pas le parallélismeLes projections perspectives ne conservent pas le parallélismedes droites non parallèles au plan de projectiondes droites non parallèles au plan de projection•• La projection de n’importe quel ensemble de lignes parallèlesLa projection de n’importe quel ensemble de lignes parallèlesnon parallèles au plan de projection convergent vers un mêmenon parallèles au plan de projection convergent vers un mêmepointpoint•• Le point de fuite.Le point de fuite.AABBaabbdddd00
  122. 122. Projection perspectiveProjection perspective•• Point de fuitePoint de fuite•• Si une droite D coupe le plan de projection, il existe un point F,Si une droite D coupe le plan de projection, il existe un point F,appelé point de fuite appartenant à la projection de toute droiteappelé point de fuite appartenant à la projection de toute droiteappelé point de fuite appartenant à la projection de toute droiteappelé point de fuite appartenant à la projection de toute droiteparallèle à D.parallèle à D.
  123. 123. Projection perspectiveProjection perspective•• On différencie les projections en perspective par le nombreOn différencie les projections en perspective par le nombrede points de fuite pour les directions des axes du repère.de points de fuite pour les directions des axes du repère.Projection à un point de fuiteProjection à un point de fuite Projection à des points de fuiteProjection à des points de fuite Projection à trois points de fuiteProjection à trois points de fuite
  124. 124. Projection perspectiveProjection perspective•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique
  125. 125. Projection perspectiveProjection perspective•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite uniqueXX Plan dePlan de⇒+−=fzxfxp--zz++ddxxxxppffzzZZPlan dePlan deprojectionprojectionCentre deCentre deprojectionprojection1.+−=⇒+−=⇒+−=fzxxfzfxxfzfpp
  126. 126. Projection perspectiveProjection perspective•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite uniqueYY Plan dePlan de⇒+−=fzyfypyyyyppff--zz++ddzzZZPlan dePlan deprojectionprojectionCentre deCentre deprojectionprojection1.+−=⇒+−=⇒+−=fzyyfzfyyfzfpp
  127. 127. Projection perspectiveProjection perspective•• Représentation en forme matricielle :Représentation en forme matricielle :⇒+−=+−=1,1fzyyfzxx pp⇒−=+−+−1.100011000010000111zyxfwzyxff
  128. 128. Projection perspectiveProjection perspective+−1fzxx+−+−=⇒+−=11111fzzfzyfzyxfzzyxwzyxppp
  129. 129. Projection perspectiveProjection perspectivePlan dePlan deprojectionprojectionffzzZZCentre deCentre deprojectionprojectionz’z’La taille de la projection varie en fonction de la distance de l’objet au plan de projectionLa taille de la projection varie en fonction de la distance de l’objet au plan de projection
  130. 130. Projection perspectiveProjection perspectivePlan dePlan deprojectionprojectionff22zzZZCentre deCentre deprojectionprojectionff11La taille de la projection varie en fonction de la distance du centre de projectionLa taille de la projection varie en fonction de la distance du centre de projectionau plan de projectionau plan de projection
  131. 131. Projection perspectiveProjection perspective• Plus f est large, plus la projection tend vers une projectionparallèle, où la profondeur a un petit effet dans les pointsprojetés et moins de sensation dans la perspective obtenue.• Plus f est petit, plus la projection diverge de la projectionparallèle. La profondeur a une influence considérable sur lespoints projetés à la limite de créer des effets de perspectiveexagérés.
  132. 132. Projection perspectiveProjection perspective•• Transformations nécessairesTransformations nécessaires
  133. 133. Projection perspectiveProjection perspective=1.1000033323102322210131211.10001000100011wwwzyxccczyxrrrrrrrrrtttzyx
  134. 134. Projection perspectiveProjection perspective=1.1100010000100001.1111111001100ccczyxfvuvu
  135. 135. Projection perspectiveProjection perspective
  136. 136. Projection perspectiveProjection perspective 01312110010001cx xrrrtPassage du repère monde au plan imagePassage du repère monde au plan image=1.1000033323102322210131211.1000100010001.1100010000100001.1111111001100ccczyxzyxrrrrrrrrrtttfvuvu=1.1000333231232221131211.11110100100ccczyxzyxtrrrtrrrtrrrvfufvu
  137. 137. RasterisationRasterisation•Découpe des primitives 2D en pixels•Interpole les valeurs connues auxsommets : couleur, profondeur, etc.pour chaque fragment affichéTransformations demodélisationIllumination(Shading)Transformations pour chaque fragment affichéTransformationsd’affichageClippingTransformation écran((Projection)Pixelisation(Rasterization)Visibilité / Affichage
  138. 138. RasterisationRasterisation•• Traçage :Traçage :Segments de droitesSegments de droites•• Segments de droitesSegments de droites•• CerclesCercles•• EllipsesEllipses•• Remplissage des primitives projetéesRemplissage des primitives projetées
  139. 139. Tracé de segments de droitesTracé de segments de droites•• Algorithme de base pour beaucoup de traitements de lInformatiqueAlgorithme de base pour beaucoup de traitements de lInformatiqueGraphique:Graphique:•• dessin en fil de fer,dessin en fil de fer,•• remplissage,remplissage,•• élimination des parties cachées,élimination des parties cachées,•• élimination des parties cachées,élimination des parties cachées,•• ......Bons tracés Mauvais tracés Mauvais tracés
  140. 140. Tracé de segments de droitesTracé de segments de droites•• Trois impératifs:Trois impératifs:•• Tout point du segment discret est traversé par le segment continu.Tout point du segment discret est traversé par le segment continu.•• Tout point du segment discret touche au moins un autre point soitTout point du segment discret touche au moins un autre point soitpar lun de ses cotés (4par lun de ses cotés (4--connexité), soit par un de ses sommetsconnexité), soit par un de ses sommetspar lun de ses cotés (4par lun de ses cotés (4--connexité), soit par un de ses sommetsconnexité), soit par un de ses sommets(8(8--connexité).connexité).•• On trace le moins de points possibles.On trace le moins de points possibles.4-connexité 8-Connexité
  141. 141. Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Le tracé d’un segment entre deux pointsLe tracé d’un segment entre deux points (x(x11,y,y11)) etet (x(x22,y,y22)) dede RR22..•• On pose comme hypothèse simplificatrice :On pose comme hypothèse simplificatrice :xx22>x>x11, y, y22>y>y11 etet (x(x22--xx11) >= (y) >= (y22--yy11))•• Tous les autres cas peuvent sy rapporter.Tous les autres cas peuvent sy rapporter.•• Tous les autres cas peuvent sy rapporter.Tous les autres cas peuvent sy rapporter.•• On utilise l’équation cartésienne de la droite :On utilise l’équation cartésienne de la droite :111212)()(axybxxyyaavecbaxy+=−−=+=
  142. 142. Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienneDroiteSimple(int xDroiteSimple(int x11,,int xint x22,,int yint y11,,int yint y22)){{a = ya = y22 –– yy11 / x/ x22 –– xx11 ;;b = yb = y11 –– a . xa . x11 ;;b = yb = y11 –– a . xa . x11 ;;xx <<-- xx11 ;;while (x < xwhile (x < x11)){{xx <<-- xx11+1 ;+1 ;AfficherPixel(x, (int) a.x+b) ;AfficherPixel(x, (int) a.x+b) ;}}}}
  143. 143. Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Incrémentation suivant l’axe xIncrémentation suivant l’axe xDroiteSimple(int xDroiteSimple(int x11,,int xint x22,,int yint y11,,int yint y22)){{a = ya = y22 –– yy11 / x/ x22 –– xx11 ; // a = 1.25; // a = 1.25b = yb = y –– a . xa . x ;; // b =// b = --0.250.25Tracé : (1,1) à (5,6)b = yb = y11 –– a . xa . x11 ;; // b =// b = --0.250.25xx <<-- xx11 ;;while (x < xwhile (x < x22)) // x : 1// x : 1 -->> 55{{xx <<-- xx11+1 ;+1 ;AfficherPixel(x, (int) a.x+b) ;AfficherPixel(x, (int) a.x+b) ;}}}}xxyy(1,1)(2,2)(3,3)(4,4)(5,6)
  144. 144. Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Incrémentation suivant l’axe yIncrémentation suivant l’axe yDroiteSimple(int xDroiteSimple(int x11,,int xint x22,,int yint y11,,int yint y22)){{a = ya = y22 –– yy11 / x/ x22 –– xx11 ; // a = 1.25; // a = 1.25b = yb = y –– a . xa . x ;; // b =// b = --0.250.25Tracé : (1,1) à (5,6)b = yb = y11 –– a . xa . x11 ;; // b =// b = --0.250.25xx <<-- xx11 ;;while (y < ywhile (y < y22)) // y : 1// y : 1 -->> 66{{yy <<-- yy11+1 ;+1 ;AfficherPixel((int) (yAfficherPixel((int) (y--b)/a, y) ;b)/a, y) ;}}}}xxyy(1,1)(1,2)(2,3)(3,4)(4,5)(5,6)
  145. 145. Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Il faut switcher entre les deux versions en fonction de lIl faut switcher entre les deux versions en fonction de la pente de la droitea pente de la droite•• Pente < 1 : version xPente < 1 : version x•• Pente > 1 : version yPente > 1 : version yversion : yversion : yversion : xversion : x
  146. 146. Tracé de segments par léquationTracé de segments par léquationcartésiennecartésienne•• Caractéristiques:Caractéristiques:•• Simplicité algorithmiqueSimplicité algorithmique•• Simplicité algorithmiqueSimplicité algorithmique•• Lenteur due à lutilisation de réels, dune divisionLenteur due à lutilisation de réels, dune divisionet de multiplications et d’opérations d’arrondissement (cast)et de multiplications et d’opérations d’arrondissement (cast)
  147. 147. Algorithmes de BresenhamAlgorithmes de Bresenhamxk xk+1 xk+2 xk+4xk+3ykJack Bresenham1962
  148. 148. Algorithmes de BresenhamAlgorithmes de Bresenhamd1d1--d2 > 0 ?d2 > 0 ?xk xk+1 xk+2 xk+4xk+3ykd1d2d1d1--d2 > 0d2 > 0
  149. 149. Algorithmes de BresenhamAlgorithmes de Bresenhamxk xk+1 xk+2 xk+4xk+3ykyk+1d1d2d1d1--d2 = 0d2 = 0
  150. 150. Algorithmes de BresenhamAlgorithmes de Bresenhamd2xk xk+1 xk+2 xk+4xk+3ykd1d2yk+1d1d1--d2 < 0d2 < 0
  151. 151. Algorithmes de BresenhamAlgorithmes de Bresenhamxk xk+1 xk+2 xk+4xk+3yk
  152. 152. Algorithmes de BresenhamAlgorithmes de BresenhamDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)){{dx = / xdx = / x22 –– xx11dy = ydy = y22 –– yy11xx <<-- xx11 ;;yy <<-- yy11 ;;e = 2 . dye = 2 . dy -- dx ;dx ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncD = 2 . (dyIncD = 2 . (dy –– d x) ;d x) ;while (x < xwhile (x < x22)){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{y = y + 1;y = y + 1;e = e + IncD ;e = e + IncD ;}}elseelsee = e + IncH ;e = e + IncH ;}}}}
  153. 153. Algorithmes de BresenhamAlgorithmes de BresenhamPrincipe :• Paramètre de décision : e (distance pixel -> droite)• Si e < 0.5 pixel = > activer le pixel E• Si e > 0.5 pixel = > activer le pixel NEPixel NEPixel NEPixel EPixel EPixel NEPixel NEPixel EPixel Eee ee
  154. 154. Algorithmes de BresenhamAlgorithmes de Bresenhame = 0e = 0x= xx= x11y= yy= y11
  155. 155. Algorithmes de BresenhamAlgorithmes de Bresenhame = 0e = 0x= xx= x11y= yy= y11
  156. 156. Algorithmes de BresenhamAlgorithmes de Bresenhame = 0e = 0x= xx= x11y= yy= y11
  157. 157. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dxe = dy/dxx= xx= x11y= yy= y11
  158. 158. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y
  159. 159. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y
  160. 160. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dxe = dy/dx
  161. 161. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dx ; e>0.5 =>e = dy/dx + dy/dx ; e>0.5 =>x= x+1x= x+1y= y+1y= y+1
  162. 162. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 11x= x+1x= x+1y= y+1y= y+1
  163. 163. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
  164. 164. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
  165. 165. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx ; e<0.5 =>1 + dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y
  166. 166. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx1 + dy/dx
  167. 167. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx ; e<0.5 =>1 + dy/dx + dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y
  168. 168. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
  169. 169. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
  170. 170. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx ; e<0.5 =>1 + dy/dx + dy/dx + dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y
  171. 171. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx
  172. 172. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx
  173. 173. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx ; e>0.5 =>1 + dy/dx + dy/dx + dy/dx + dy/dx ; e>0.5 =>x= x+1x= x+1y= y+1y= y+1
  174. 174. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx + dy/dx -- 1 ; e>0.5 =>1 ; e>0.5 =>x= x+1x= x+1y= y+1y= y+1
  175. 175. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx + dy/dx -- 11
  176. 176. Algorithmes de BresenhamAlgorithmes de Bresenhame = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx + dy/dx -- 11
  177. 177. Algorithmes de BresenhamAlgorithmes de Bresenham•• Algorithme de baseAlgorithme de baseDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)){{dx = / xdx = / x22 –– xx11dy = ydy = y22 –– yy11a = dy / dx ;a = dy / dx ;xx <<-- xx11 ;;<<--xx xx ;;yy <<-- yy11 ;;e = 0 ;e = 0 ;while (x < xwhile (x < x22)){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + a ;e = e + a ;x= x + 1;x= x + 1;if (e > 0.5)if (e > 0.5){{y =y + 1;y =y + 1;e =ee =e -- 1;1;}}}}}}
  178. 178. Algorithmes de BresenhamAlgorithmes de Bresenham•• supprimer la division parsupprimer la division par ddxxDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)){{dx = / xdx = / x22 –– xx11dy = ydy = y22 –– yy11xx <<-- xx11 ;;yy <<-- yy11 ;;e = 0 ;e = 0 ;e = 0 ;e = 0 ;while (x < xwhile (x < x22)){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + dy ;e = e + dy ;x = x + 1;x = x + 1;if (e > dx/2)if (e > dx/2){{y = y + 1;y = y + 1;e = ee = e -- dx;dx;}}}}}}
  179. 179. Algorithmes de BresenhamAlgorithmes de Bresenham•• division par 2 à supprimerdivision par 2 à supprimerDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)){{dx = / xdx = / x22 –– xx11dy = ydy = y22 –– yy11xx <<-- xx11 ;;yy <<-- yy11 ;;e = 0 ;e = 0 ;e = 0 ;e = 0 ;while (x < xwhile (x < x22)){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + 2 . dy ;e = e + 2 . dy ;x = x + 1;x = x + 1;if (e > dx)if (e > dx){{y = y + 1;y = y + 1;e = ee = e –– 2 . dx;2 . dx;}}}}}}
  180. 180. Algorithmes de BresenhamAlgorithmes de Bresenham•• optimisations pour rendre lalgorithme plus rapideoptimisations pour rendre lalgorithme plus rapide : tester le signe de e au lieu de le comparer à: tester le signe de e au lieu de le comparer àun autre nombreun autre nombreDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)){{dx = / xdx = / x22 –– xx11dy = ydy = y22 –– yy11xx <<-- xx11 ;;yy <<-- yy ;;yy <<-- yy11 ;;e =e = -- dx ;dx ;while (x < xwhile (x < x22)){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + 2 . dy ;e = e + 2 . dy ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{y = y + 1 ;y = y + 1 ;e = ee = e –– 2 . dx ;2 . dx ;}}}}}}
  181. 181. Algorithmes de BresenhamAlgorithmes de Bresenham•• modifier e quune seule fois lors de chaque itérationmodifier e quune seule fois lors de chaque itérationDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)){{dx = / xdx = / x22 –– xx11dy = ydy = y22 –– yy11xx <<-- xx11 ;;yy <<-- yy11 ;;e = 2 . dye = 2 . dy -- dx ;dx ;e = 2 . dye = 2 . dy -- dx ;dx ;while (x < xwhile (x < x22)){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{y = y + 1;y = y + 1;e = e + 2 . (dye = e + 2 . (dy –– d x) ;d x) ;}}elseelsee = e + 2 . dy ;e = e + 2 . dy ;}}}}
  182. 182. Algorithmes de BresenhamAlgorithmes de Bresenham•• calculer davance les deux incréments possibles pour e : déplacement horizontal ou diagonalcalculer davance les deux incréments possibles pour e : déplacement horizontal ou diagonalDroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)){{dx = / xdx = / x22 –– xx11dy = ydy = y22 –– yy11xx <<-- xx11 ;;yy <<-- yy11 ;;e = 2 . dye = 2 . dy -- dx ;dx ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncD = 2 . (dyIncD = 2 . (dy –– d x) ;d x) ;while (x < xwhile (x < x22)){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{y = y + 1;y = y + 1;e = e + IncD ;e = e + IncD ;}}elseelsee = e + IncH ;e = e + IncH ;}}}}
  183. 183. Algorithmes de BresenhamAlgorithmes de Bresenham•• Caractéristiques :Caractéristiques :•• Plus grande complexité algorithmique.Plus grande complexité algorithmique.•• Rapidité due àRapidité due à•• Utilisation exclusive dentiers courts (valeurs maximales de lordreUtilisation exclusive dentiers courts (valeurs maximales de lordrede la résolution de lécrande la résolution de lécran --> petites valeurs)> petites valeurs)•• Opérations arithmétiques simples sur ces entiers (additions,Opérations arithmétiques simples sur ces entiers (additions,soustractions et comparaisons).soustractions et comparaisons).
  184. 184. Tracé de cerclesTracé de cercles
  185. 185. Tracé de cerclesTracé de cercles
  186. 186. Tracé de cerclesTracé de cercles
  187. 187. Tracé de cerclesTracé de cercles
  188. 188. Tracé de cerclesTracé de cercles
  189. 189. Tracé de cerclesTracé de cercles
  190. 190. Tracé de cerclesTracé de cercles
  191. 191. Tracé de cerclesTracé de cercles
  192. 192. Tracé de cerclesTracé de cerclesd2d2d1d1d1>d2d1>d2
  193. 193. Tracé de cerclesTracé de cercles
  194. 194. Tracé de cerclesTracé de cerclesd2d2d1>d2d1>d2d1d1d2d2
  195. 195. Tracé de cerclesTracé de cercles
  196. 196. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles• On suppose le centre à l’origine• Le rayon r est un entier• On trace seulement le deuxième octant• Les autres octants tracés par symétrie• Les autres octants tracés par symétrie(x,y)(y,x)(x,-y)(y,-x)(-x,y)(-y,x)(-y,-x)(-x,-y)
  197. 197. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles
  198. 198. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles
  199. 199. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles
  200. 200. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• Forme implicite du cercle :Forme implicite du cercle : f(x,y) = x² + y²f(x,y) = x² + y² -- r²r²0),( >yxf0),( =yxf0),( <yxf
  201. 201. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur deOn calcule la valeur de f(x,y)f(x,y) au pointau point MM, noté, noté eeii ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)²+ 1)² -- (y(yii --1/2 )²1/2 )² -- r²r²e ≥ 0: M est au-dessus de la droite(x(xii, y, yii))• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE• ei < 0: M est sous la droite• Q est au-dessus de M on va à E
  202. 202. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur deOn calcule la valeur de f(x,y)f(x,y) au pointau point MM, noté, noté eeii ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)²+ 1)² -- (y(yii --1/2 )²1/2 )² -- r²r²e ≥ 0: M est au-dessus de la droite MMEQ(x(xii, y, yii))• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE• ei < 0: M est sous la droite• Q est au-dessus de M on va à EMMSE
  203. 203. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur deOn calcule la valeur de f(x,y)f(x,y) au pointau point MM, noté, noté eeii ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)²+ 1)² -- (y(yii --1/2 )²1/2 )² -- r²r²e ≥ 0: M est au-dessus de la droite(x(xii, y, yii))• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE• ei < 0: M est sous la droite• Q est au-dessus de M on va à E
  204. 204. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur deOn calcule la valeur de f(x,y)f(x,y) au pointau point MM, noté, noté eeii ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)²+ 1)² -- (y(yii --1/2 )²1/2 )² -- r²r²e ≥ 0: M est au-dessus de la droite MME(x(xii, y, yii))• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE• ei < 0: M est sous la droite• Q est au-dessus de M on va à EMMSEQ
  205. 205. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur deOn calcule la valeur de f(x,y)f(x,y) au pointau point MM, noté, noté eeii ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)²+ 1)² -- (y(yii --1/2 )²1/2 )² -- r²r²e ≥ 0: M est au-dessus de la droite(x(xii, y, yii))• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE• ei < 0: M est sous la droite• Q est au-dessus de M on va à E
  206. 206. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur deOn calcule la valeur de f(x,y)f(x,y) au pointau point MM, noté, noté eeii ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)²+ 1)² -- (y(yii --1/2 )²1/2 )² -- r²r²e ≥ 0: M est au-dessus de la droite(x(xii, y, yii))• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE• ei < 0: M est sous la droite• Q est au-dessus de M on va à EMMSEEQ
  207. 207. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• On calcule la valeur deOn calcule la valeur de f(x,y)f(x,y) au pointau point MM, noté, noté eeii ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)²+ 1)² -- (y(yii --1/2 )²1/2 )² -- r²r²e ≥ 0: M est au-dessus de la droite(x(xii, y, yii))• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE• ei < 0: M est sous la droite• Q est au-dessus de M on va à E
  208. 208. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cercles•• Le calcul de l’erreur se fait manière incrémentaleLe calcul de l’erreur se fait manière incrémentale•• Pour chaque pixel activé (en cours de trainement) nous calculons le paramètre dePour chaque pixel activé (en cours de trainement) nous calculons le paramètre dedécision du pixel suivantdécision du pixel suivanteeii = f (x= f (xii + 1, y+ 1, yii --1/2 )1/2 )•• SiSi eeii > 0> 0 ((MM à l’extérieur) alors le pixel à afficher est SEà l’extérieur) alors le pixel à afficher est SESiSi ee > 0> 0 ((MM à l’extérieur) alors le pixel à afficher est SEà l’extérieur) alors le pixel à afficher est SE•• Le prochain point milieu seraLe prochain point milieu sera (x(xii + 2, y+ 2, yii --3/2 )3/2 )•• eei+1i+1 == f (xf (xii + 2, y+ 2, yii --3/2 ) = e3/2 ) = eii + 2 . x+ 2 . xii –– 2 . y2 . yii + 5+ 5•• SiSi eeii < 0< 0 ((MM à l’intérieur) alors le pixel à afficher est Eà l’intérieur) alors le pixel à afficher est E•• Le prochain point milieu seraLe prochain point milieu sera (x(xii + 2, y+ 2, yii --1/2 )1/2 )•• eei+1i+1 == f (xf (xii + 2, y+ 2, yii --1/2 ) = e1/2 ) = eii + 2 . x+ 2 . xii + 3+ 3MMSEEQ(x(xii, y, yii))
  209. 209. Algorithmes de BresenhamAlgorithmes de Bresenhampour le tracé de cerclespour le tracé de cerclesCerclePointMilieu(int r)CerclePointMilieu(int r) // le center du cercle est à l’origine// le center du cercle est à l’origine{{int x = 0 ;int x = 0 ;int y = rint y = rdouble e = 5.0/4.0double e = 5.0/4.0 –– r ;r ; // point de départ(0,r) => point intermédiaire (1,r// point de départ(0,r) => point intermédiaire (1,r--1/2)1/2)AfficherPixel(x, y) ;AfficherPixel(x, y) ;AfficherPixel(x, y) ;AfficherPixel(x, y) ;While (y > x) {While (y > x) { // octant 2// octant 2if(e < 0)if(e < 0) // pixel suivant E// pixel suivant Ee = e + 2 . x + 3 ;e = e + 2 . x + 3 ;else{else{ // pixel suivant SE// pixel suivant SEe = e + 2 . xe = e + 2 . x –– 2 . y + 5 ;2 . y + 5 ;y = yy = y –– 1 ;1 ;}}AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1 ;x = x + 1 ;}}}}
  210. 210. •• La généralisation aux huit octants se fait en remplaçant la procLa généralisation aux huit octants se fait en remplaçant la procédure AfficherPixel() de l’algorithme par la procédure suivante :édure AfficherPixel() de l’algorithme par la procédure suivante :AfficherPixelCercle(x, y)AfficherPixelCercle(x, y){{(x,y)(-x,y){{AfficherPixel(x, y) ;AfficherPixel(x, y) ;AfficherPixel(x,AfficherPixel(x, --y) ;y) ;AfficherPixel(AfficherPixel(--x, y) ;x, y) ;AfficherPixel(AfficherPixel(--x,x, --y) ;y) ;AfficherPixel(y, x) ;AfficherPixel(y, x) ;AfficherPixel(y,AfficherPixel(y, --x) ;x) ;AfficherPixel(AfficherPixel(--y, x) ;y, x) ;AfficherPixel(AfficherPixel(--y, xy, x--) ;) ;}}(y,x)(x,-y)(y,-x)(-y,x)(-y,-x)(-x,-y)

×