SlideShare ist ein Scribd-Unternehmen logo
1 von 525
Downloaden Sie, um offline zu lesen
Algorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphique
M. AMMIM. AMMI
ammi@limsi.frammi@limsi.fr
20092009
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 desdes
surfacessurfaces
•• 19631963 :: SketchpadSketchpad (thèse(thèse dede IvanIvan Sutherland),Sutherland), proposepropose unun premierpremier modèlemodèle completcomplet dede
systèmesystème graphiquegraphique interactifinteractif (sélectionner,(sélectionner, pointer,pointer, dessiner,dessiner, éditer)éditer);; identifieidentifie lesles
structuresstructures dede donnéesdonnées etet algorithmesalgorithmes nécessairesnécessaires.. AvancéeAvancée majeuremajeure dansdans lele domainedomaine
dudu graphismegraphisme
19651965 :: 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 facesfaces
cachéescachées
•• 19711971 :: HH.. GouraudGouraud faitfait uneune thèsethèse avecavec EvansEvans àà l’Universitél’Université d’Utahd’Utah oùoù ilil metmet auau pointpoint
unun algorithmealgorithme dede lissagelissage d’ombresd’ombres
•• 19711971 :: RR.. GoldsteinGoldstein etet RR.. NagelNagel posentposent lesles basesbases dede lala CSGCSG (Constructive(Constructive SolidSolid
GeometryGeometry))
•• 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 lele
rendurendu 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
HistoriqueHistorique
•• 1979 : James H. Clark conçoit le premier processeur1979 : James H. Clark conçoit le premier processeur
programmable 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és
graphiquesgraphiques
•• 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 Surface
ConstructionConstruction 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..00
PourPour plusplus dede détailsdétails :: httphttp:://accad//accad..osuosu..edu/~waynec/history/timelineedu/~waynec/history/timeline..htmlhtml
Domaines d’applicationDomaines d’application
•• Art & divertissementArt & divertissement
• Films d’animation,
Effets spéciaux
• Jeux (Temps réel,• Jeux (Temps réel,
Interaction)
Domaines d’applicationDomaines d’application
•• Suivi de processus et Téléopération (online)Suivi de processus et Téléopération (online)
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!
Domaines d’applicationDomaines d’application
•• Visualisation de donnéesVisualisation de données
•• MédicalesMédicales
•• GéophysiquesGéophysiques
•• BiologiquesBiologiques•• BiologiquesBiologiques
Domaines d’applicationDomaines d’application
•• Conception assistée par ordinateurConception assistée par ordinateur
•• Immersive ou pasImmersive ou pas
DéfinitionsDéfinitions
•• DéfinitionDéfinition officielleofficielle dede l’infographiel’infographie (office(office dede lala languelangue
franç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’INFOrmatiqueINFOrmatique
etet GRAPHIqueGRAPHIque
•• AppellationAppellation déposéedéposée parpar lala sociétésociété BensonBenson enen 19741974
•• 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 àà partirpartir
d’objetsd’objets géométriquesgéométriques dontdont l’expressionl’expression mathématiquemathématique estest connueconnue..
DéfinitionsDéfinitions
d’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 auxaux
autresautres formentforment unun modèlemodèle géométriquegéométrique completcomplet dede lala scènescène virtuellevirtuelle àà représenterreprésenter
etet 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érentes
sourcessources dede lumièrelumière dede lala scènescène etet lesles objetobjet.. CetteCette interactioninteraction s’évalues’évalue àà partirpartir desdes
caractéristiquescaractéristiques physiquesphysiques desdes objetsobjets etet desdes sourcessources dede lumières,lumières, etet desdes propriétéspropriétés
gé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)..
Pipeline GraphiquePipeline Graphique
Pipeline GraphiquePipeline Graphique
Transformations de
modélisation
Illumination
(Shading)
Transformations
Modèle de laModèle de la
scènescène
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage Image 3DImage 3D
Transformations de modélisationTransformations de modélisation
•Application des transformations de
composition de scène : Passage du
système de coordonnées local de
chaque objet 3D (object space) vers
Transformations de
modélisation
Illumination
(Shading)
Transformations
chaque objet 3D (object space) vers
un repère global (world space)
Object space World space
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
IlluminationIllumination
•Les primitives sont éclairées selon
leur matériau, le type de surface et les
sources de lumière.
•Les modèles d’illumination sont
Transformations de
modélisation
Illumination
(Shading)
Transformations •Les modèles d’illumination sont
locaux (pas d’ombres) car le calcul est
effectué par primitive : diffus, ambiant,
Gouraud, Phong, etc.
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Transformations d’affichageTransformations d’affichage
•Passe des coordonnées du monde à
celles du point de vue (repère caméra ou
eye space).
•En général le repère est aligné selon z.
Transformations de
modélisation
Illumination
(Shading)
Transformations
The 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 space
World space
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
ClippingClipping
•Passage en coordonnées normalisées
(NDC : normalized device coordinates)
Transformations de
modélisation
Illumination
(Shading)
Transformations
Eye space NDC
•Suppression des parties hors du
volume de vision.
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Transformation écranTransformation écran
•Les primitives 3D sont projetées sur
l'espace image 2D (screen space)
Transformations de
modélisation
Illumination
(Shading)
Transformations
NDC
Screen
Space
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
RasterisationRasterisation
•Découpe des primitives 2D en pixels
•Interpole les valeurs connues aux
sommets : couleur, profondeur, etc.
pour chaque fragment affiché
Transformations de
modélisation
Illumination
(Shading)
Transformations pour chaque fragment affichéTransformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Visibilité et affichageVisibilité et affichage
•Élimination des parties cachées
•Remplissage du frame buffer avec le
bon format de couleur.
Transformations de
modélisation
Illumination
(Shading)
TransformationsTransformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Système de coordonnéesSystème de coordonnées
Repère objet
Repère scène
Transformations de
modélisation
Illumination
(Shading)
Transformations
Repère caméra
Espace écran
Repère caméra
normalisé (NDC)
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Le pipeline graphiqueLe pipeline graphique
•Modèle géométrique : objets,
surfaces, sources de lumière…
•Modèle d’illumination : calcul des
interactions lumineuses
Transformations de
modélisation
Illumination
(Shading)
Transformations
•Caméra : point de vue et
ouverture (frustum)
•Fenêtre (viewport) : grille de pixel
sur laquelle on plaque l’image
•Couleurs, intensités convenant à
l’afficheur (ex : 24 bits, RVB)
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Le pipeline graphiqueLe pipeline graphique
•Chaque primitive passe
successivement par toutes les étapes
•Le pipeline peut être implémenté de
Transformations de
modélisation
Illumination
(Shading)
Transformations
•Le pipeline peut être implémenté de
diverses manières avec des étapes en
hardware et d’autres en software
•A certaines étapes on peut disposer
d’outils de programmation (ex : vertex
ou pixel program)
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
ImplémentationImplémentation
Transformations de
modélisation
Illumination
(Shading)
Transformations
Software
configurable
Sans carte graphique 3D
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
ImplémentationImplémentation
Transformations de
modélisation
Illumination
(Shading)
Transformations Software
configurable
Hardware
Cartes graphiques
première génération
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
configurable
ImplémentationImplémentation
Transformations de
modélisation
Illumination
(Shading)
Transformations
Cartes graphiques
deuxième génération
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Hardware
configurable
ImplémentationImplémentation
Transformations de
modélisation
Illumination
(Shading)
Transformations
Cartes graphiques
troisième génération
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Hardware
programmable
Rappels mathématiquesRappels mathématiques
ScalaireScalaire
•• Un scalaire est une grandeur totalement définie par un nombreUn scalaire est une grandeur totalement définie par un nombre
et une unité.et une unité.
•• Il a une valeur numérique mais pas d'orientation.Il a une valeur numérique mais pas d'orientation.
•• Ex :Ex :•• Ex :Ex :
•• MasseMasse
•• DistanceDistance
•• TempératureTempérature
•• VolumeVolume
•• DensitéDensité
•• Etc.Etc.
•• Les scalaires obéissent aux lois de l'algèbre ordinaireLes scalaires obéissent aux lois de l'algèbre ordinaire
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
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ériques
extraites 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 l'orientation du vecteuret l'orientation 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
•• ForceForce
3
2
R
Z
z
y
x
y
x
















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 axe
de 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.
kzjyixV
rrrr
''' ++=
VecteurVecteur
•• Les vecteurs obéissent aux lois de l'algèbre vectorielleLes vecteurs obéissent aux lois de l'algè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
Produit scalaireProduit scalaire
• Le produit scalaire de deux vecteurs est le produit du module du premier par
la composante du second dans la direction du premier
B
r
B
r
θcosA
•• Produit scalaire en fonctionProduit scalaire en fonction
•• du module et de l’angle :du module et de l’angle :
•• des composantes :des composantes :
A
r
θ
A
r
θ
θcosB
θcos. BABA =
rr
zzyyxx BABABABA ++=
rr
.
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 scalaire
wvwuwvu ...)( +=+
).()(. vukvku ×=×
Produit scalaireProduit scalaire
•• Angle entre deux vecteursAngle entre deux vecteurs
θcos. BABA
rrrr
=
zzyyxx BABABABA ++=
rr
. BA
BABABA zzyyxx
rr
++
=⇒ θcos
•• Signe du produit scalaireSigne du produit scalaire
zzyyxx BABABABA ++=.
°<<°−⇒> 90900. θBA
rr
°±=⇒= 900. θBA
rr
°<<°°−<<°−⇒< 18090901800. θθ ouBA
rr
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.
Produit vectorielProduit vectoriel
• Le module du produit vectoriel de
deux vecteurs est le produit du module
du premier par la composante du
second qui est perpendiculaire au
premier.
θθθ
rrrrrrrr
===×
A
r
B
r
θ
θsinB
A
r
B
r
θ
θsinA
• Le produit vectoriel est un vecteur
perpendiculaire à A et à B dont le
sens est donné par la règle de la
main droite.
• Le produit vectoriel est nul si les deux
vecteur sont parallèles et maximal s’ils sont
perpendiculaires.
θθθ sin)sin()sin( BAABBABA
rrrrrrrr
===×
nuBABA
rrrrr
)sin( θ=× A
r
B
r
θ
BA
rr
×
nu
r
Produit vectoriel en fonction des composantes:
Produit vectorielProduit vectoriel
yx
yx
zx
zx
zy
zy
zyx
BB
AA
k
BB
AA
j
BB
AA
i
BBB
AAA
kji
BA
rrr
rrr
rr
+−+==×
( ) ( )( ) ( )( ) ( )( )
:
2 4 1 4 1 2
1 2 4
1 5 3 5 3 1
3 1 5
2 5 1 4 1 5 3 4 1 1 3 2
6 17 7
Exemple
i j k
A B i j k
A B i j k
A B i j k
− −
× = − = + − +
− −
−
× = × − − × − − × − × − + × − − ×
× = − −
rr r
rr r r r
rr r r r
rr r r r
yxzxzy
zyx BBB
)()()( yxyxzxzxzyzy ABBAkABBAjABBAiBA −+−−−=×
rrrrr
Produit vectorielProduit vectoriel
•• PropriétésPropriétés
•• AnticommutativitéAnticommutativité
•• Distributivité sur l'additionDistributivité sur l'addition
)()( uvvu ×−=×
wvwuwvu ×+×=×+ )(•• Distributivité sur l'additionDistributivité sur l'addition
•• Distributivité par un scalaireDistributivité par un scalaire
•• NonNon--associativitéassociativité
wvwuwvu ×+×=×+ )(
kvkukvu ...)( +=+
)()( wvuwvu ××≠××
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’addition de deux vecteurs obéit à la règle du parallélogramme.
A
r
BA
rr
+
•• Algébriquement cela se met en oeuvre en additionnant lesAlgébriquement cela se met en oeuvre en additionnant les
composantes individuellement.composantes individuellement.
B
r
kbjbibB
kajaiaA
zyx
zyx
rrrr
rrrr
++=
++=
kbajbaibaBA zzyyxx
rrrrr
)()()( +++++=+
Addition de deux vecteursAddition de deux vecteurs
Un vecteur A peut être décomposé en ses
composantes rectangulaires Ax et Ay.
cos
sin
x A
y A
A A
A A
θ
θ
=
=
Il est possible d’additionner des vecteurs en
additionnant les composantes de ces vecteur.
2 2
cos sin
cos sin
x A y A
x B y B
x x x y y y
y
x y R
x
A A A A
B B B B
R A B R A B
R
R R R tg
R
θ θ
θ θ
θ
= =
= =
= + = +
= + =
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 composantes
d’un vecteur forment toujours des triangles rectangles deux à deux.d’un vecteur forment toujours des triangles rectangles deux à deux.
jyixV
rrr
'' +=
•• 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 du
triangle rectangle soient les projections du vecteur dans un soustriangle rectangle soient les projections du vecteur dans un sous--espace de dimensionespace de dimension
nn––1 et dans l’axe de la dimension manquante.1 et dans l’axe de la dimension manquante.
•• La norme d'un vecteur AB est la distance de A à BLa norme d'un vecteur AB est la distance de A à B
ix
r
'
jy
r
'
V
r
22
)'()'( yxV +=
r
222
)'()'()'( zyxV ++=
r
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, avec
la 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 composantes
par sa norme.par sa norme.
222
)'()'()'(
'''
zyx
kzjyix
V
V
++
++
=
rrr
r
r
)
)'()'()'(
'
,
)'()'()'(
'
,
)'()'()'(
'
(
222222222
zyx
z
zyx
y
zyx
x
Vn
++++++
=
r
)'()'()'( zyxV ++
V
r
nV
r
nVVV
rrr
.=
MatriceMatrice
•• On appelle matrice M un tableau à deux indices de n*m valeursOn appelle matrice M un tableau à deux indices de n*m valeurs
numériques extraites du même ensemble E.numériques extraites du même ensemble E.
mmmmm
mmmmm





 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 colonnes
de la matrice.de la matrice.
•• Si n = m la matrice est dite carrée.Si n = m la matrice est dite carrée.
R
mmmmm
mmmmm
mmmmm











 4444434241
3434333231
2424232221
MatriceMatrice
•• Opération possibleOpération possible
•• AdditionAddition
•• MatriceMatrice--matricematrice
•• ScalaireScalaire--matricematrice
MultiplicationMultiplication•• MultiplicationMultiplication
•• MatriceMatrice--matricematrice
•• MatriceMatrice--vecteurvecteur
•• ScalaireScalaire--matricematrice
•• InversionInversion
•• TranspositionTransposition
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.
VMW
rr
.=W
r
M V
r
V
r
M
•• 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.
nivmw
n
k kiki ≤≤=∑ =
1.1
m x nm x n n x 1n x 1 m x 1m x 1
Produit matrice par vecteurProduit matrice par vecteur
•• ExempleExemple
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 formule
suivante :suivante :
1M 2M
suivante :suivante :
)1,1(2.11
pjnimmm
m
k kjikij ≤≤≤≤=∑ =
n x mn x m m x pm x p n x pn x p
Produit matrice par matriceProduit matrice par matrice
•• ExempleExemple
Espace vectorielEspace vectoriel -- Espace affineEspace affine
•• UnUn espaceespace vectorielvectoriel estest l’espacel’espace oùoù viventvivent lesles vecteursvecteurs (déplacements(déplacements ouou
directions)directions).. SesSes principalesprincipales propriétéspropriétés sontsont l’existencel’existence d’und’un vecteurvecteur nulnul etet lala stasta
bilité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 desquelsdesquels
onon définitdéfinit lesles objetsobjets géométriquesgéométriques usuelsusuels (droites,(droites, ......)).. IlIl sese construitconstruit àà partirpartir
d’und’un pointpoint dede référenceréférence (l’origine)(l’origine) etet d’und’un espaceespace vectorielvectoriel (déplacements(déplacements
autorisésautorisés àà partirpartir dede cece point)point)..
TransformationsTransformations
Linéaire
Affine
Projective
Similitude
Translation Rotation
Rigide / Euclidienne
Linéaire
Similitude
Homothétie
isotrope Homothétie
Reflection
Perspective
Identité
TransformationsTransformations
Linéaire
Affine
Projective
Similitude
Translation Rotation
Rigide / Euclidienne
Linéaire
Similitude
Homothétie
isotrope Homothétie
Reflection
Perspective
Identité
TransformationsTransformations
•• Transformations Euclidiennes rigides : 6 DDLTransformations Euclidiennes rigides : 6 DDL
•• Rotation (3DDL), Translation (3DDL).Rotation (3DDL), Translation (3DDL).
•• PropriétésPropriétés
Préservent les angles.Préservent les angles.•• Préservent les angles.Préservent les angles.
•• Préservent les distances.Préservent les distances.
TransformationsTransformations
Linéaire
Affine
Projective
Similitude
Translation Rotation
Rigide / Euclidienne
Linéaire
Similitude
Homothétie
isotrope Homothétie
Reflection
Perspective
Identité
TransformationsTransformations
•• Similitudes : 7 DDLSimilitudes : 7 DDL
•• Rotation (3DDL), Translation (3DDL), HomothétieRotation (3DDL), Translation (3DDL), Homothétie
isotrope (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, un
carré reste un carré, etc.)
• Généralisation des transformations Euclidiennes
et Homothétie
TransformationsTransformations
Linéaire
Affine
Projective
Similitude
Translation Rotation
Rigide / Euclidienne
Linéaire
Similitude
Homothétie
isotrope Homothétie
Reflection
Perspective
Identité
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
TransformationsTransformations
Linéaire
Affine
Projective
Similitude
Translation Rotation
Rigide / Euclidienne
Linéaire
Similitude
Homothétie
isotrope Homothétie
Reflection
Perspective
Identité
TransformationsTransformations
• Transformations affines : 12 DDL
•• Rotation (3DDL), Translation (3DDL), Homothétie (3DDL),Rotation (3DDL), Translation (3DDL), Homothétie (3DDL), ReflectionReflection
(3DDL)(3DDL)
• Propriétés
Pré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
TransformationsTransformations
Linéaire
Affine
Projective
Similitude
Translation Rotation
Rigide / Euclidienne
Linéaire
Similitude
Homothétie
isotrope Homothétie
Reflection
Perspective
Identité
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(3DD
L), 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
Transformations de modélisationTransformations de modélisation
•Application des transformations de
composition de scène : Passage du
système de coordonnées local de
chaque objet 3D (object space) vers
Transformations de
modélisation
Illumination
(Shading)
Transformations
chaque objet 3D (object space) vers
un repère global (world space)
Object space World space
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
Les transformations élémentairesLes transformations élémentairesLes transformations élémentairesLes transformations élémentaires
TransformationsTransformations
•• Utilisations :Utilisations :
•• Déplacement d'un objet dans une scèneDéplacement d'un objet dans une scène
•• Déplacement d'un observateur par rapport a une scèneDéplacement d'un observateur par rapport a une scène
•• Réplication d'un motif ou d'un objetRéplication d'un motif ou d'un objet
•• Déformation d'un objetDéformation d'un objet
•• ProjectionProjection
•• etc.etc.
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 à tous
ses sommetsses sommets
T+RT+R
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






= i
i
i y
x
p






=
i
ii
z
yp
TransformationsTransformations
•• Translation :Translation :
•• Ajouter aux coordonnées du sommet la valeur de la translationAjouter aux coordonnées du sommet la valeur de la translation
ixi
yTy
xTx
+=
+=
'
'
•• Notation matricielleNotation matricielle
•• Addition du vecteur de translationAddition du vecteur de translation










+










=










i
i
i
z
y
x
i
i
i
z
y
x
T
T
T
z
y
x
'
'
'
izi
iyi
zTz
yTy
+=
+=
'
'
T
p(x,y)
p’(x’,y’)
Tx
Ty
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 vectorielle
zizii
yxy
yxx
−=
−=
cos.sin.'
sin.cos.'
θθ
θθ
zθ
•• Notation matricielleNotation matricielle
•• Multiplication par la matrice de rotationMultiplication par la matrice de rotation
ii
zizii
zz
yxy
=
−=
'
cos.sin.' θθ



















 −
=










i
i
i
zz
zz
i
i
i
z
y
x
z
y
x
100
0cossin
0sincos
'
'
'
θθ
θθ
p(x,y)
p’(x’,y’)
xx’
y’
y
θz
TransformationsTransformations
•• HomothétieHomothétie
•• Multiplication par les facteurs d’échellesMultiplication par les facteurs d’échelles
iyi
ixi
ySy
xSx
.'
.'
=
=
•• Notation matricielleNotation matricielle
•• Multiplication par la matrice d’HomothétieMultiplication par la matrice d’Homothétie




















=










i
i
i
z
y
x
i
i
i
z
y
x
S
S
S
z
y
x
00
00
00
'
'
'
izi zSz .' =
p(x,y)
p’(x’,y’)
xSx. x
Sy. y
y
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 (tra
nslation, 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
Coordonnées homogènesCoordonnées homogènes
•• LesLes coordonnéescoordonnées homogèneshomogènes sontsont utiliséesutilisées enen synthèsesynthèse d'imaged'image afinafin d'unifierd'unifier lele traitementtraitement desdes
transformationstransformations géométriquesgéométriques d'uned'une scènescène etet dede lesles regrouperregrouper dansdans uneune seuleseule matricematrice.. EnEn effet,effet,
sisi l'onl'on utiliseutilise uneune matricematrice 22**22 pourpour lesles scènesscènes bidimensionnellesbidimensionnelles etet uneune matricematrice 33**33 pourpour lesles
scè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 utiliserutiliser
desdes 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))
3x33x3
1x31x3
3x13x1
1x11x1
RotationRotation
et changementet changement
d’échelled’échelle PerspectivePerspective HomothétieHomothétie TranslationTranslation
Coordonnées homogènesCoordonnées homogènes
•• Ainsi, si (x,y,z) sont les coordonnées d'un point de la scène à transformer etAinsi, si (x,y,z) sont les coordonnées d'un point de la scène à transformer et MMHH
la 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 d'elle étant associée à un typematrices, chacune d'elle étant associée à un type
de transformation.de transformation.
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ée
s homogènes.s homogènes.
•• Le Point transformé de par la matrice est :Le Point transformé de par la matrice est :
p
M
'p 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 .'=
TranslationsTranslations






=












=
×
×
10100
010
001
31
133 TI
T
T
T
T
z
y
x






 1000
PT
zT
yT
xT
z
y
x
T
T
T
PTP
z
y
x
z
y
x
+=














+
+
+
=




























==
11
.
1000
100
010
001
.'
Rotations (angles d’Euler)Rotations (angles d’Euler)






=














=
×
××
10
0
1000
0
0
0
31
1333
333231
232221
131211
R
RRR
RRR
RRR
R













 −














−














−
==
1000
0100
00cossin
00sincos
.
1000
0cos0sin
0010
0sin0cos
.
1000
0cossin0
0sincos0
0001
.. zz
zz
yy
yy
xx
xx
zyx RRRR
θθ
θθ
θθ
θθ
θθ
θθ




























==
1
.
1000
0
0
0
.'
333231
232221
131211
z
y
x
RRR
RRR
RRR
PRP
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ée
homogéne
cos(Ө) 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 ‘-’
Homothétie isotropeHomothétie isotrope






=












=
×
××
10
0
1000
000
000
000
31
1333S
S
S
S
R





 1000
PS
zS
yS
xS
z
y
x
S
S
S
PSP .
1
.
.
.
1
.
1000
000
000
000
.' =














=




























==
Homothétie : Affinités orthogonalesHomothétie : Affinités orthogonales






=














=
×
××
10
0
1000
000
000
000
31
1333S
S
S
S
R
z
y
x
xSxS .000 
PS
zS
yS
xS
z
y
x
S
S
S
PSP
z
y
x
z
y
x
.
1
.
.
.
1
.
1000
000
000
000
.' =














=




























==














1000
0100
0010
000xS














1000
000
0010
0001
zS














1000
0100
000
0001
yS
Affinité d'axe x par rapportAffinité d'axe x par rapport
au plan yOzau plan yOz
Affinité d'axe y par rapportAffinité d'axe y par rapport
au plan xOzau plan xOz
Affinité d'axe z par rapportAffinité d'axe z par rapport
au plan xOyau plan xOy
GlissementGlissement
•• Appelée aussiAppelée aussi shearshear ou cisaillement : étirement suivant un axeou cisaillement : étirement suivant un axe
•• La matrice d'un glissement parallèle à x et de rapport k est :La matrice d'un glissement parallèle à x et de rapport k est :








0100
0010
001 k
•• La matrice d'un glissement parallèle à x, de rapport k et de ligne de base y = yLa matrice d'un glissement parallèle à x, de rapport k et de ligne de base y = yrefref est :est :







 1000
0100













 −
1000
0100
0010
0.1 refykk
refy
Composition de Transformations
(0,0)
(1,1)
(2,2)
(0,0)
(5,3)
(3,1)
Scale(2,2) Translate(3,1)
Composition de Transformations
Exemple :Exemple :
(0,0) (0,0)
Multiplication de matrices :Multiplication de matrices : p'p' == TT .(.( SS ..pp ) = T.S .) = T.S .pp










=




















=
100
120
302
100
020
002
.
100
110
301
.ST
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-commutatif
Composition de Transformations
translation 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)










=




















=
100
120
302
100
020
002
.
100
110
301
)2,2().1,3( ST
Composition de Transformations










=




















=












100
220
602
100
110
301
.
100
020
002
)1,3().2,2(
100100100
TS
p’ = M . p et p" = M’. p’
=>
Cas général
Composition de Transformations
=>
p" = M’ . M . p
ou
p" = M" . p avec M" = M’ . M
Ordre d’Application
Composition de Transformations
p" = 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 de
droite à gauchedroite à gauche, et non dans le sens de la lecture, et non dans le sens de la lecture
Composition de Transformations
•• Les transformations élémentaires sont définies parLes transformations élémentaires sont définies par
rapport à 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>O
2.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
Exemple 1 :
On désire établir la transformation consistant à effectuer une
rotation de Өz radians autour de l'axe colinéaire à z passant
par le point P de coordonnées (Tx,Ty,Tz).
Composition de Transformations
par le point P de coordonnées (Tx,Ty,Tz).
ZZ
XX
YY
R(θz)
Cette transformation M est réalisée en amenant p à l'origine par une
translation T de -p, puis en effectuant une rotation R d'angle Өz autour de
l'axe Oz, et enfin en ramenant p à sa position initiale par une translation T'
de p :
p’ = (T(x,y,z) . R(θz) . T(-x,-y,-z) ) . p = M . p
Composition de Transformations
ZZ
XX
YY
( z )
ZZ
XX
YY
T(-x,-y,-z)
T(x,y,z)
R(θz)
Composition de Transformations














−
−
−













 −














=
1000
100
010
001
.
1000
0100
00cossin
00sincos
.
1000
100
010
001
z
y
x
zz
zz
z
y
x
T
T
T
T
T
T
M
θθ
θθ














++−
++−−
=














−
+−
+−−














=

1000
0100
cossin0cossin
sincos0sincos
1000
100
cossin0cossin
sincos0sincos
.
1000
100
010
001
100010001000
yzyzxzz
xzyzxzz
z
zyzxzz
zyzxzz
z
y
x
TTT
TTT
M
T
TT
TT
T
T
T
M
θθθθ
θθθθ
θθθθ
θθθθ
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
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 des
objets 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 absolue
par 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 transformation
relative 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 po
sitionne 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)
Modélisation hiérarchiqueModélisation hiérarchique
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") dans
lequel on effectue une décomposition récursive du modèlelequel on effectue une décomposition récursive du modèle
gé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 pour
aboutir aux nœudsaboutir aux nœuds
Modélisation hiérarchiqueModélisation hiérarchique
Exemple : MaisonExemple : Maison
Modélisation hiérarchiqueModélisation hiérarchique
Maison
Tm
TcTg
Fenêtre 1Porte
Facade
Garage Corps Principal
Fenêtre 2 Fenêtre 3 Fenêtre 4 Fenêtre 5
Toit
Tva
Tfa
Tf1
Vitre a
Tga Tgb
Modélisation hiérarchiqueModélisation hiérarchique
porte a du garage Tm.Tg.Tga
Pile de transformationsPile de transformations
porte b du garage
vitre a
etc . . . .
Tm.Tg.Tgb
Tm.Tc.Tfa.Tf1.Tva
Changement de repèreChangement de repère
•• Permet de transformer les coordonnées d'un point expriméesPermet de transformer les coordonnées d'un point exprimées
dans un premier repère en coordonnées exprimées dansdans un premier repère en coordonnées exprimées dans
deuxiè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.
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 RR11
ZZ XX
RR11
ZZ11
YY11
XX11
RR22
ZZ22
YY22
XX22
MM
Changement de repèreChangement de repère
12 .pMp =
21312111 x xTRRRx












21
1
.
10001
2
2
12
333231
232221
1
1
R
z
y
R
z
y
TRRR
TRRR
z
y
























=











 →
12
333231
232221
131211
1000 →














=
z
y
x
TRRR
TRRR
TRRR
M
Changement de repèreChangement de repère
ZZ11
ZZ22 XX22
ӨӨzz 0 RRR
RR11
YY11
XX11
RR22
ZZ22
YY22
XX22
ӨӨzz
ӨӨyy
ӨӨxx
12
333231
232221
131211
1000
0
0
0
→














RRR
RRR
RRR
Changement de repèreChangement de repère
ZZ11
ZZ22 XX22
RR11
YY11
XX11
RR22
YY22
TT
12
333231
232221
131211
1000 →














z
y
x
TRRR
TRRR
TRRR
Changement de repèreChangement de repère
•• Passage du repère R1 au repère R2Passage du repère R1 au repère R2
ZZ11
RR22
ZZ22 XX22
M’M’
RR11
YY11
XX11
RR22
YY22
2
1
121 .'. pMppMp −
=⇒=
1122
1
.
10001
1
1
1
1
333231
232221
131211
2
2
2
R
z
y
x
R
z
y
x
TRRR
TRRR
TRRR
z
y
x




























=














−
→
La projectionLa projectionLa projectionLa projection
Transformation écranTransformation écran
•Les primitives 3D sont projetées sur
l'espace image 2D (screen space)
Transformations de
modélisation
Illumination
(Shading)
Transformations
NDC
Screen
Space
Transformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
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.
AAAA
BB
aa
bb
XXXX
•• On note que la projection d'une droite en 3D est une droite en 2D.On note que la projection d'une droite en 3D est une droite en 2D.
•• Il est suffisant de projeter les sommets d'une droite 3D et puis de tracer la droiteIl est suffisant de projeter les sommets d'une droite 3D et puis de tracer la droite
2D entre ces projections.2D entre ces projections.
La projectionLa projection
•• LesLes projectionsprojections desdes objetsobjets sontsont forméesformées parpar lesles intersectionsintersections dede ligneslignes
appelé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..
ProjecteursProjecteurs
Centre de projectionCentre de projection
(CP)(CP)
Plan de projectionPlan de projection AA
BB
aa
bb
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’es
pace tridimensionnel, le résultat est une projection en perspectipace tridimensionnel, le résultat est une projection en perspecti
ve.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èles
et le résultat est une projection parallèle.et le résultat est une projection parallèle.
AA
BB
aa
bb
AA
BB
aa
bb
Projection perspectiveProjection perspective projection parallèleprojection parallèle
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
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 de
projection (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 une
direction 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 direction
de projection soit perpendiculaire au plan de projection :de projection soit perpendiculaire au plan de projection :
•• Projections orthographiquesProjections orthographiques
•• Projections obliquesProjections obliques
objetobjet
projetéprojeté
projectionprojection
de l’objetde l’objet
DPDP
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 image
Plan de projectionPlan de projection
Plan de projectionPlan de projection
Projection orthographiqueProjection orthographique
•• Vue de devant, d’en haut, et de côtéVue de devant, d’en haut, et de côté
Projection orthographiqueProjection orthographique
•• La projection orthographique consiste à supprimer uneLa projection orthographique consiste à supprimer une
dimensiondimension
•• La dimension supprimée est celle suivant laquelle on réaliseLa dimension supprimée est celle suivant laquelle on réalise
la projectionla projection
Axe de projectionAxe de projection
ZZ
XX
XX
ppP’P’
Plan de projectionPlan de projection
Projection orthographiqueProjection orthographique
•• Forme matricielle :Forme matricielle :
= .' pMp PZ




























=














1
.
1000
0000
0010
0001
1
0
'
'
z
y
x
y
x
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 de
s plans perpendiculaires aux axes des coordonnées en mettant une des plans perpendiculaires aux axes des coordonnées en mettant une de
s coordonnées du point à 0.s coordonnées du point à 0.














=














=














=
1000
0000
0010
0001
1000
0100
0000
0001
1000
0100
0010
0000
PZPYPX MMM
Elimination de la dimension suivant la quelle nous réalisons la projectionElimination de la dimension suivant la quelle nous réalisons la projection
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 des
coordonnés, donc plusieurs facettes de l’objet sont montrées encoordonnés, donc plusieurs facettes de l’objet sont montrées en
même temps.même temps.même temps.même temps.
Projection obliqueProjection oblique
•• Direction de la projection n’est pas perpendiculaire au planDirection de la projection n’est pas perpendiculaire au plan
de projectionde projection
•• DP coupe le plan de projection en faisant un angle obliqueDP coupe le plan de projection en faisant un angle oblique
avec 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.
Projection obliqueProjection oblique
objetobjet
projetéprojeté
projectionprojection
de l’objetde l’objet
DPDP
projetéprojeté
Projection perspectiveProjection perspective
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 inversement
avec 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élisme
des 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èles
non parallèles au plan de projection convergent vers un mêmenon parallèles au plan de projection convergent vers un même
pointpoint
•• Le point de fuite.Le point de fuite.
AA
BB
aa
bb
dd
dd00
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 droite
parallèle à D.parallèle à D.
Projection perspectiveProjection perspective
•• On différencie les projections en perspective par le nombreOn différencie les projections en perspective par le nombre
de 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
Projection perspectiveProjection perspective
•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique
Projection perspectiveProjection perspective
•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique
XX Plan dePlan de⇒
+−
=
fz
x
f
xp
--zz++dd
xx
xxpp
ffzz
ZZ
Plan dePlan de
projectionprojection
Centre deCentre de
projectionprojection
1
.
+−
=
⇒
+−
=
⇒
+−
=
f
z
x
x
fz
fx
x
fzf
p
p
Projection perspectiveProjection perspective
•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique
YY Plan dePlan de⇒
+−
=
fz
y
f
yp
yy
yypp
ff
--zz++dd
zz
ZZ
Plan dePlan de
projectionprojection
Centre deCentre de
projectionprojection
1
.
+−
=
⇒
+−
=
⇒
+−
=
f
z
y
y
fz
fy
y
fzf
p
p
Projection perspectiveProjection perspective
•• Représentation en forme matricielle :Représentation en forme matricielle :
⇒
+−
=
+−
=
1
,
1
f
z
y
y
f
z
x
x pp
⇒




























−=














+−+−
1
.
1000
1
100
0010
0001
'
'
'
'
11
z
y
x
f
w
z
y
x
ff
Projection perspectiveProjection perspective








+−

1
f
z
x
x






















+−
+−=














⇒














+−
=














1
1
1
11'
'
'
'
f
z
z
f
z
y
f
z
y
x
f
z
z
y
x
w
z
y
x
p
p
p
Projection perspectiveProjection perspective
Plan dePlan de
projectionprojection
ffzz
ZZ
Centre deCentre de
projectionprojection
z’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
Projection perspectiveProjection perspective
Plan dePlan de
projectionprojection
ff22
zz
ZZ
Centre deCentre de
projectionprojection
ff11
La 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 projection
au plan de projectionau plan de projection
Projection perspectiveProjection perspective
• Plus f est large, plus la projection tend vers une projection
parallèle, où la profondeur a un petit effet dans les points
projetés et moins de sensation dans la perspective obtenue.
• Plus f est petit, plus la projection diverge de la projection
parallèle. La profondeur a une influence considérable sur les
points projetés à la limite de créer des effets de perspective
exagérés.
Projection perspectiveProjection perspective
•• Transformations nécessairesTransformations nécessaires
Projection perspectiveProjection perspective










































=














1
.
1000
0333231
0232221
0131211
.
1000
100
010
001
1
w
w
w
z
y
x
c
c
c
z
y
x
rrr
rrr
rrr
t
t
t
z
y
x
Projection perspectiveProjection perspective






































=










1
.
1
1
00
0100
0010
0001
.
1111
111
001
1
0
0
c
c
c
z
y
x
f
v
u
v
u
Projection perspectiveProjection perspective
Projection perspectiveProjection perspective














 01312110010001
cx xrrrt
Passage du repère monde au plan imagePassage du repère monde au plan image


































































=










1
.
1000
0333231
0232221
0131211
.
1000
100
010
001
.
1
1
00
0100
0010
0001
.
1111
111
001
1
0
0
c
c
c
z
y
x
z
y
x
rrr
rrr
rrr
t
t
t
f
v
u
v
u






































=










1
.
1000
333231
232221
131211
.
1111
01
00
1
0
0
c
c
c
z
y
x
z
y
x
trrr
trrr
trrr
vf
uf
v
u
RasterisationRasterisation
•Découpe des primitives 2D en pixels
•Interpole les valeurs connues aux
sommets : couleur, profondeur, etc.
pour chaque fragment affiché
Transformations de
modélisation
Illumination
(Shading)
Transformations pour chaque fragment affichéTransformations
d’affichage
Clipping
Transformation écran
((Projection)
Pixelisation
(Rasterization)
Visibilité / Affichage
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
Tracé de segments de droitesTracé de segments de droites
•• Algorithme de base pour beaucoup de traitements de l'InformatiqueAlgorithme de base pour beaucoup de traitements de l'Informatique
Graphique: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
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 soit
par l'un de ses cotés (4par l'un de ses cotés (4--connexité), soit par un de ses sommetsconnexité), soit par un de ses sommetspar l'un de ses cotés (4par l'un 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é
Tracé de segments par l'équationTracé de segments par l'équation
carté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 s'y rapporter.Tous les autres cas peuvent s'y rapporter.•• Tous les autres cas peuvent s'y rapporter.Tous les autres cas peuvent s'y rapporter.
•• On utilise l’équation cartésienne de la droite :On utilise l’équation cartésienne de la droite :
11
12
12
)(
)(
axyb
xx
yy
a
avec
baxy
+=
−
−
=
+=
Tracé de segments par l'équationTracé de segments par l'équation
cartésiennecartésienne
DroiteSimple(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) ;
}}
}}
Tracé de segments par l'équationTracé de segments par l'équation
cartésiennecartésienne
•• Incrémentation suivant l’axe xIncrémentation suivant l’axe x
DroiteSimple(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.25
b = yb = y –– a . xa . x ;; // b =// b = --0.250.25
Tracé : (1,1) à (5,6)
b = yb = y11 –– a . xa . x11 ;; // b =// b = --0.250.25
xx <<-- 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) ;
}}
}}
xx
yy
(1,1)
(2,2)
(3,3)
(4,4)
(5,6)
Tracé de segments par l'équationTracé de segments par l'équation
cartésiennecartésienne
•• Incrémentation suivant l’axe yIncrémentation suivant l’axe y
DroiteSimple(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.25
b = yb = y –– a . xa . x ;; // b =// b = --0.250.25
Tracé : (1,1) à (5,6)
b = yb = y11 –– a . xa . x11 ;; // b =// b = --0.250.25
xx <<-- 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) ;
}}
}}
xx
yy
(1,1)
(1,2)
(2,3)
(3,4)
(4,5)
(5,6)
Tracé de segments par l'équationTracé de segments par l'équation
cartésiennecartésienne
•• Il faut switcher entre les deux versions en fonction de lIl faut switcher entre les deux versions en fonction de l
a pente de la droitea pente de la droite
•• Pente < 1 : version xPente < 1 : version x
•• Pente > 1 : version yPente > 1 : version y
version : yversion : y
version : xversion : x
Tracé de segments par l'équationTracé de segments par l'équation
cartésiennecartésienne
•• Caractéristiques:Caractéristiques:
•• Simplicité algorithmiqueSimplicité algorithmique•• Simplicité algorithmiqueSimplicité algorithmique
•• Lenteur due à l'utilisation de réels, d'une divisionLenteur due à l'utilisation de réels, d'une division
et de multiplications et d’opérations d’arrondissement (cast)et de multiplications et d’opérations d’arrondissement (cast)
Algorithmes de BresenhamAlgorithmes de Bresenham
xk xk+1 xk+2 xk+4xk+3
yk
Jack Bresenham
1962
Algorithmes de BresenhamAlgorithmes de Bresenham
d1d1--d2 > 0 ?d2 > 0 ?
xk xk+1 xk+2 xk+4xk+3
yk
d1
d2
d1d1--d2 > 0d2 > 0
Algorithmes de BresenhamAlgorithmes de Bresenham
xk xk+1 xk+2 xk+4xk+3
yk
yk+1
d1
d2
d1d1--d2 = 0d2 = 0
Algorithmes de BresenhamAlgorithmes de Bresenham
d2
xk xk+1 xk+2 xk+4xk+3
yk
d1
d2
yk+1
d1d1--d2 < 0d2 < 0
Algorithmes de BresenhamAlgorithmes de Bresenham
xk xk+1 xk+2 xk+4xk+3
yk
Algorithmes de BresenhamAlgorithmes de Bresenham
DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22))
{{
dx = / xdx = / x22 –– xx11
dy = ydy = y22 –– yy11
xx <<-- 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 ;
}}
elseelse
e = e + IncH ;e = e + IncH ;
}}
}}
Algorithmes de BresenhamAlgorithmes de Bresenham
Principe :
• 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 NE
Pixel NEPixel NE
Pixel EPixel E
Pixel NEPixel NE
Pixel EPixel E
ee ee
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 0e = 0
x= xx= x11
y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 0e = 0
x= xx= x11
y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 0e = 0
x= xx= x11
y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dxe = dy/dx
x= xx= x11
y= yy= y11
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>
x= x+1x= x+1
y= yy= y
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>
x= x+1x= x+1
y= yy= y
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dxe = dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dx ; e>0.5 =>e = dy/dx + dy/dx ; e>0.5 =>
x= x+1x= x+1
y= y+1y= y+1
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
x= x+1x= x+1
y= y+1y= y+1
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx ; e<0.5 =>1 + dy/dx ; e<0.5 =>
x= x+1x= x+1
y= yy= y
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx1 + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 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+1
y= yy= y
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 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+1
y= yy= y
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenham
e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 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+1
y= y+1y= y+1
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 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+1
y= y+1y= y+1
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 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
Algorithmes de BresenhamAlgorithmes de Bresenham
e = 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
Algorithmes de BresenhamAlgorithmes de Bresenham
•• Algorithme de baseAlgorithme de base
DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22))
{{
dx = / xdx = / x22 –– xx11
dy = ydy = y22 –– yy11
a = 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;
}}
}}
}}
Algorithmes de BresenhamAlgorithmes de Bresenham
•• supprimer la division parsupprimer la division par ddxx
DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22))
{{
dx = / xdx = / x22 –– xx11
dy = ydy = y22 –– yy11
xx <<-- 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;
}}
}}
}}
Algorithmes de BresenhamAlgorithmes de Bresenham
•• division par 2 à supprimerdivision par 2 à supprimer
DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22))
{{
dx = / xdx = / x22 –– xx11
dy = ydy = y22 –– yy11
xx <<-- 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;
}}
}}
}}
Algorithmes de BresenhamAlgorithmes de Bresenham
•• optimisations pour rendre l'algorithme plus rapideoptimisations pour rendre l'algorithme 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 nombre
DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22))
{{
dx = / xdx = / x22 –– xx11
dy = ydy = y22 –– yy11
xx <<-- 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 ;
}}
}}
}}
Algorithmes de BresenhamAlgorithmes de Bresenham
•• modifier e qu'une seule fois lors de chaque itérationmodifier e qu'une seule fois lors de chaque itération
DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22))
{{
dx = / xdx = / x22 –– xx11
dy = ydy = y22 –– yy11
xx <<-- 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) ;
}}
elseelse
e = e + 2 . dy ;e = e + 2 . dy ;
}}
}}
Algorithmes de BresenhamAlgorithmes de Bresenham
•• calculer d'avance les deux incréments possibles pour e : déplacement horizontal ou diagonalcalculer d'avance les deux incréments possibles pour e : déplacement horizontal ou diagonal
DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22))
{{
dx = / xdx = / x22 –– xx11
dy = ydy = y22 –– yy11
xx <<-- 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 ;
}}
elseelse
e = e + IncH ;e = e + IncH ;
}}
}}
Algorithmes de BresenhamAlgorithmes de Bresenham
•• Caractéristiques :Caractéristiques :
•• Plus grande complexité algorithmique.Plus grande complexité algorithmique.
•• Rapidité due àRapidité due à
•• Utilisation exclusive d'entiers courts (valeurs maximales de l'ordreUtilisation exclusive d'entiers courts (valeurs maximales de l'ordre
de 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).
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 cercles
d2d2
d1d1
d1>d2d1>d2
Tracé de cerclesTracé de cercles
Tracé de cerclesTracé de cercles
d2d2
d1>d2d1>d2
d1d1
d2d2
Tracé de cerclesTracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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)
Algorithmes de BresenhamAlgorithmes de Bresenham
pour le tracé de cerclespour le tracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenham
pour le tracé de cerclespour le tracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenham
pour le tracé de cerclespour le tracé de cercles
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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),( >yxf
0),( =yxf
0),( <yxf
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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 MM
E
Q
(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
MM
SE
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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 MM
E(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
MM
SE
Q
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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
MM
SE
E
Q
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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
Algorithmes de BresenhamAlgorithmes de Bresenham
pour 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 de
décision du pixel suivantdécision du pixel suivant
eeii = 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+ 3
MM
SE
E
Q
(x(xii, y, yii))
Algorithmes de BresenhamAlgorithmes de Bresenham
pour le tracé de cerclespour le tracé de cercles
CerclePointMilieu(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 = r
double 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 2
if(e < 0)if(e < 0) // pixel suivant E// pixel suivant E
e = e + 2 . x + 3 ;e = e + 2 . x + 3 ;
else{else{ // pixel suivant SE// pixel suivant SE
e = 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 ;
}}
}}
•• 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)
•• OptimisationOptimisation
•• Au départAu départ
•• ee00 = 5.0/4.0= 5.0/4.0 –– r = 1.25r = 1.25 –– rr
•• Si eSi eii < 0 alors on va à «< 0 alors on va à « EE »»
•• eei+1i+1 = e= eii + 2 . x+ 2 . xii + 3 ;+ 3 ;
•• Sinon eSinon eii > 0 alors on va à «> 0 alors on va à « SESE »»
•• eei+1i+1 = e= eii + 2 . x+ 2 . xii –– 2 . y2 . yii + 5 ;+ 5 ;
Algorithmes de BresenhamAlgorithmes de Bresenham
pour le tracé de cerclespour le tracé de cercles
• Si on pose hi = ei – 0.25, on peut remplacer l’initialisation par:
h0 = 1 – r
• On devrait donc aussi modifier la comparaison « if(e < 0)if(e < 0) »» par :if(e < 0)if(e < 0) »»
if (hi < - 0.25){
• Cependant, on remarque que hi sera toujours un entier donc :
hi < - 0.25 => hi < 0
• On peut donc seulement changer l’initialisation et remplacer ei par hi ailleurs
Algorithmes de BresenhamAlgorithmes de Bresenham
pour le tracé de cerclespour le tracé de cercles
CerclePointMilieu(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 = r
double h = 1double h = 1 –– 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)
AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;
While (y > x) {While (y > x) { // octant 2// octant 2
if(h < 0)if(h < 0) // pixel suivant E// pixel suivant E
h = h + 2 . x + 3 ;h = h + 2 . x + 3 ;
else{else{ // pixel suivant SE// pixel suivant SE
h = h + 2 . xh = h + 2 . x –– 2 . y + 5 ;2 . y + 5 ;
y = yy = y –– 1 ;1 ;
}}
AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;
x = x + 1 ;x = x + 1 ;
}}
}}
Anticrenelage (antialiasing)Anticrenelage (antialiasing)
•• LesLes algorithmesalgorithmes dede tracétracé présentésprésentés précédemmentprécédemment ontont unun problèmeproblème communcommun
dede précisionprécision..
•• LaLa discrétisationdiscrétisation impliqueimplique uneune perteperte d’informationsd’informations quiqui sese traduittraduit parpar desdes
contourscontours enen formeforme dede marchesmarches d’escaliersd’escaliers..
•• CetteCette perteperte d’informationsd’informations estest bienbien connuconnu enen traitementtraitement dudu signalsignal (analyse(analyse dede
Fourier)Fourier) etet lele termeterme aliasingaliasing quiqui enen estest issuissu estest utiliséutilisé enen graphismegraphisme pourpour
caractérisercaractériser cesces artefactsartefacts dansdans lesles imagesimages produitesproduites :: MoiréesMoiréescaractérisercaractériser cesces artefactsartefacts dansdans lesles imagesimages produitesproduites :: MoiréesMoirées
•• L’antialiasingL’antialiasing consisteconsiste alorsalors àà corrigercorriger (diminuer)(diminuer) cesces effetseffets..
Anticrenelage (antialiasing)Anticrenelage (antialiasing)
Sans correction Avec correction
Anticrenelage (antialiasing)Anticrenelage (antialiasing)
•• Les deux principales solutions :Les deux principales solutions :
•• SurSur--échantillonnage de l’imageéchantillonnage de l’image
•• Algorithmes de tracé de segments corrigésAlgorithmes de tracé de segments corrigés
SurSur--échantillonnage de l’imageéchantillonnage de l’image
•• CetteCette méthodeméthode consisteconsiste àà calculer,calculer, dansdans unun premierpremier temps,temps, uneune imageimage
virtuellevirtuelle àà uneune résolutionrésolution plusplus importanteimportante queque cellecelle dede l’imagel’image désiréedésirée (en(en
mémoiremémoire maismais nonnon àà l'écran),l'écran), enen pratiquepratique XX33,, XX55 ouou XX77,, puispuis dede réduireréduire
cettecette imageimage parpar filtragefiltrage ::cettecette imageimage parpar filtragefiltrage ::
•• L’intensitéL’intensité dede chaquechaque pixelpixel dede l’imagel’image finalefinale estest déterminéedéterminée parpar
moyennagemoyennage pondérépondéré ouou parpar filtragefiltrage (filtre(filtre passepasse--basbas parpar convolution)convolution) dede
plusieursplusieurs pixelspixels dede l’imagel’image sursur--échantillonnéeéchantillonnée..
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique
Algorithmique graphique

Weitere ähnliche Inhalte

Andere mochten auch

2011 curriculo al-servicio-del-aprendizaje 0-
2011 curriculo al-servicio-del-aprendizaje 0-2011 curriculo al-servicio-del-aprendizaje 0-
2011 curriculo al-servicio-del-aprendizaje 0-Adalberto
 
Red representantes de cada distrito fisica, artistica, ciudadana
Red  representantes de cada distrito fisica, artistica, ciudadanaRed  representantes de cada distrito fisica, artistica, ciudadana
Red representantes de cada distrito fisica, artistica, ciudadanaAdalberto
 
L’impressionnisme
L’impressionnismeL’impressionnisme
L’impressionnismeIvan Pidov
 
Le colonisation de rwanda
Le colonisation de rwandaLe colonisation de rwanda
Le colonisation de rwandaChris Rice
 
Dejeps presentation formation avril 2014
Dejeps presentation formation avril 2014Dejeps presentation formation avril 2014
Dejeps presentation formation avril 2014Bernard Bousigue
 
Les usages de l'iPad en France
Les usages de l'iPad en FranceLes usages de l'iPad en France
Les usages de l'iPad en Francedamoncb
 
Evaluac ión 7
Evaluac ión 7Evaluac ión 7
Evaluac ión 7Adalberto
 
Al7 ma19tepa0009 sequence-03
Al7 ma19tepa0009 sequence-03Al7 ma19tepa0009 sequence-03
Al7 ma19tepa0009 sequence-03tarek1961moussa
 
Rp.6.7 malouine1
Rp.6.7 malouine1Rp.6.7 malouine1
Rp.6.7 malouine1sonatine402
 
Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015
Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015
Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015Oscar Ayala
 
Elproblemadelainvestigacin 091004184138-phpapp01
Elproblemadelainvestigacin 091004184138-phpapp01Elproblemadelainvestigacin 091004184138-phpapp01
Elproblemadelainvestigacin 091004184138-phpapp01Adalberto
 
Globalizacion civilizacion y barbarie [articulo]
Globalizacion   civilizacion y barbarie [articulo]Globalizacion   civilizacion y barbarie [articulo]
Globalizacion civilizacion y barbarie [articulo]Adalberto
 
AG MCP 3 octobre 2014
AG MCP 3 octobre 2014AG MCP 3 octobre 2014
AG MCP 3 octobre 2014Michel Dumas
 

Andere mochten auch (18)

Culto 5 De Abril
Culto 5 De AbrilCulto 5 De Abril
Culto 5 De Abril
 
2011 curriculo al-servicio-del-aprendizaje 0-
2011 curriculo al-servicio-del-aprendizaje 0-2011 curriculo al-servicio-del-aprendizaje 0-
2011 curriculo al-servicio-del-aprendizaje 0-
 
Red representantes de cada distrito fisica, artistica, ciudadana
Red  representantes de cada distrito fisica, artistica, ciudadanaRed  representantes de cada distrito fisica, artistica, ciudadana
Red representantes de cada distrito fisica, artistica, ciudadana
 
Bulletin me m avril 2015
Bulletin me m avril 2015Bulletin me m avril 2015
Bulletin me m avril 2015
 
L’impressionnisme
L’impressionnismeL’impressionnisme
L’impressionnisme
 
Ski nautique pass'
Ski nautique pass'Ski nautique pass'
Ski nautique pass'
 
Le colonisation de rwanda
Le colonisation de rwandaLe colonisation de rwanda
Le colonisation de rwanda
 
Fo02 sabina misoch_fr
Fo02 sabina misoch_frFo02 sabina misoch_fr
Fo02 sabina misoch_fr
 
Dejeps presentation formation avril 2014
Dejeps presentation formation avril 2014Dejeps presentation formation avril 2014
Dejeps presentation formation avril 2014
 
Ecureuil roux
Ecureuil rouxEcureuil roux
Ecureuil roux
 
Les usages de l'iPad en France
Les usages de l'iPad en FranceLes usages de l'iPad en France
Les usages de l'iPad en France
 
Evaluac ión 7
Evaluac ión 7Evaluac ión 7
Evaluac ión 7
 
Al7 ma19tepa0009 sequence-03
Al7 ma19tepa0009 sequence-03Al7 ma19tepa0009 sequence-03
Al7 ma19tepa0009 sequence-03
 
Rp.6.7 malouine1
Rp.6.7 malouine1Rp.6.7 malouine1
Rp.6.7 malouine1
 
Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015
Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015
Conferencia Liderazgo Integrlal Cali, Colombia Dic 11 2015
 
Elproblemadelainvestigacin 091004184138-phpapp01
Elproblemadelainvestigacin 091004184138-phpapp01Elproblemadelainvestigacin 091004184138-phpapp01
Elproblemadelainvestigacin 091004184138-phpapp01
 
Globalizacion civilizacion y barbarie [articulo]
Globalizacion   civilizacion y barbarie [articulo]Globalizacion   civilizacion y barbarie [articulo]
Globalizacion civilizacion y barbarie [articulo]
 
AG MCP 3 octobre 2014
AG MCP 3 octobre 2014AG MCP 3 octobre 2014
AG MCP 3 octobre 2014
 

Ähnlich wie Algorithmique graphique

Programmer sous Unreal Engine
Programmer sous Unreal EngineProgrammer sous Unreal Engine
Programmer sous Unreal EngineGeeks Anonymes
 
Introduction à l’infographie
Introduction à l’infographieIntroduction à l’infographie
Introduction à l’infographieWiki Info Systeme
 
Réalité virtuelle Immersive pour la conception de postes de travail
Réalité virtuelle Immersive pour la conception de postes de travailRéalité virtuelle Immersive pour la conception de postes de travail
Réalité virtuelle Immersive pour la conception de postes de travailAlexandre BOUCHET
 
Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4CORETECHNOLOGIE
 
Présentation du logiciel PixInsight
Présentation du logiciel PixInsightPrésentation du logiciel PixInsight
Présentation du logiciel PixInsightDidier Walliang
 
Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...
Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...
Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...Marc Bourhis
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotiqueMicrosoft
 
Evolution des métiers du design interactif
Evolution des métiers du design interactifEvolution des métiers du design interactif
Evolution des métiers du design interactifdesigners interactifs
 
Alphorm.com Formation Blender 2.7x - L'essentiel
Alphorm.com Formation Blender 2.7x - L'essentielAlphorm.com Formation Blender 2.7x - L'essentiel
Alphorm.com Formation Blender 2.7x - L'essentielAlphorm
 
Logiciel pour géomètres sans AutoCAD
Logiciel pour géomètres sans AutoCADLogiciel pour géomètres sans AutoCAD
Logiciel pour géomètres sans AutoCADOlivierCochard3
 
Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
Cartographie et SIG_Partie4
Cartographie et SIG_Partie4Cartographie et SIG_Partie4
Cartographie et SIG_Partie4Ibrahima Sylla
 
55618882 cours-de-piste
55618882 cours-de-piste55618882 cours-de-piste
55618882 cours-de-pisteAhmed HA
 
55618882 cours-de-piste-130703084410-phpapp01
55618882 cours-de-piste-130703084410-phpapp0155618882 cours-de-piste-130703084410-phpapp01
55618882 cours-de-piste-130703084410-phpapp01AYOUB KERFAL
 
L’image de synthèse au cinéma
L’image de synthèse au cinémaL’image de synthèse au cinéma
L’image de synthèse au cinémaboublyboh
 
Diapo stage Java & BI
Diapo stage Java & BIDiapo stage Java & BI
Diapo stage Java & BIHassan Nazih
 

Ähnlich wie Algorithmique graphique (20)

Programmer sous Unreal Engine
Programmer sous Unreal EngineProgrammer sous Unreal Engine
Programmer sous Unreal Engine
 
Introduction à l’infographie
Introduction à l’infographieIntroduction à l’infographie
Introduction à l’infographie
 
Réalité virtuelle Immersive pour la conception de postes de travail
Réalité virtuelle Immersive pour la conception de postes de travailRéalité virtuelle Immersive pour la conception de postes de travail
Réalité virtuelle Immersive pour la conception de postes de travail
 
Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4
 
Présentation du logiciel PixInsight
Présentation du logiciel PixInsightPrésentation du logiciel PixInsight
Présentation du logiciel PixInsight
 
Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...
Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...
Présentation colorimétrie & préservation François Helt (hts) Atelier focus In...
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
 
01 une histoire du di
01 une histoire du di01 une histoire du di
01 une histoire du di
 
Evolution des métiers du design interactif
Evolution des métiers du design interactifEvolution des métiers du design interactif
Evolution des métiers du design interactif
 
Alphorm.com Formation Blender 2.7x - L'essentiel
Alphorm.com Formation Blender 2.7x - L'essentielAlphorm.com Formation Blender 2.7x - L'essentiel
Alphorm.com Formation Blender 2.7x - L'essentiel
 
Logiciel pour géomètres sans AutoCAD
Logiciel pour géomètres sans AutoCADLogiciel pour géomètres sans AutoCAD
Logiciel pour géomètres sans AutoCAD
 
Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
Bitmaps
BitmapsBitmaps
Bitmaps
 
Cartographie et SIG_Partie4
Cartographie et SIG_Partie4Cartographie et SIG_Partie4
Cartographie et SIG_Partie4
 
55618882 cours-de-piste
55618882 cours-de-piste55618882 cours-de-piste
55618882 cours-de-piste
 
55618882 cours-de-piste-130703084410-phpapp01
55618882 cours-de-piste-130703084410-phpapp0155618882 cours-de-piste-130703084410-phpapp01
55618882 cours-de-piste-130703084410-phpapp01
 
L’image de synthèse au cinéma
L’image de synthèse au cinémaL’image de synthèse au cinéma
L’image de synthèse au cinéma
 
Diapo stage Java & BI
Diapo stage Java & BIDiapo stage Java & BI
Diapo stage Java & BI
 

Mehr von TheYacine

كيف تعد رسالة دكتوراه ـ أومبرتو إيكو
كيف تعد رسالة دكتوراه ـ أومبرتو إيكوكيف تعد رسالة دكتوراه ـ أومبرتو إيكو
كيف تعد رسالة دكتوراه ـ أومبرتو إيكوTheYacine
 
The best 31 websites for online courses
The best 31 websites for online coursesThe best 31 websites for online courses
The best 31 websites for online coursesTheYacine
 
التلفزيون وآليات التلاعب بالعقول بيير بورديو
التلفزيون وآليات التلاعب بالعقول   بيير بورديوالتلفزيون وآليات التلاعب بالعقول   بيير بورديو
التلفزيون وآليات التلاعب بالعقول بيير بورديوTheYacine
 
الإسلام ومستقبل النقود عمران حسين
الإسلام ومستقبل النقود   عمران حسينالإسلام ومستقبل النقود   عمران حسين
الإسلام ومستقبل النقود عمران حسينTheYacine
 
كيف تقرأ كتابا
كيف تقرأ كتاباكيف تقرأ كتابا
كيف تقرأ كتاباTheYacine
 
Camera parameters
Camera parametersCamera parameters
Camera parametersTheYacine
 

Mehr von TheYacine (8)

كيف تعد رسالة دكتوراه ـ أومبرتو إيكو
كيف تعد رسالة دكتوراه ـ أومبرتو إيكوكيف تعد رسالة دكتوراه ـ أومبرتو إيكو
كيف تعد رسالة دكتوراه ـ أومبرتو إيكو
 
Latex
LatexLatex
Latex
 
The best 31 websites for online courses
The best 31 websites for online coursesThe best 31 websites for online courses
The best 31 websites for online courses
 
التلفزيون وآليات التلاعب بالعقول بيير بورديو
التلفزيون وآليات التلاعب بالعقول   بيير بورديوالتلفزيون وآليات التلاعب بالعقول   بيير بورديو
التلفزيون وآليات التلاعب بالعقول بيير بورديو
 
Holy quran
Holy quranHoly quran
Holy quran
 
الإسلام ومستقبل النقود عمران حسين
الإسلام ومستقبل النقود   عمران حسينالإسلام ومستقبل النقود   عمران حسين
الإسلام ومستقبل النقود عمران حسين
 
كيف تقرأ كتابا
كيف تقرأ كتاباكيف تقرأ كتابا
كيف تقرأ كتابا
 
Camera parameters
Camera parametersCamera parameters
Camera parameters
 

Kürzlich hochgeladen

COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 

Kürzlich hochgeladen (16)

Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 

Algorithmique graphique

  • 1. Algorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphique M. AMMIM. AMMI ammi@limsi.frammi@limsi.fr 20092009
  • 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 desdes surfacessurfaces •• 19631963 :: SketchpadSketchpad (thèse(thèse dede IvanIvan Sutherland),Sutherland), proposepropose unun premierpremier modèlemodèle completcomplet dede systèmesystème graphiquegraphique interactifinteractif (sélectionner,(sélectionner, pointer,pointer, dessiner,dessiner, éditer)éditer);; identifieidentifie lesles structuresstructures dede donnéesdonnées etet algorithmesalgorithmes nécessairesnécessaires.. AvancéeAvancée majeuremajeure dansdans lele domainedomaine dudu graphismegraphisme 19651965 :: 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 facesfaces cachéescachées •• 19711971 :: HH.. GouraudGouraud faitfait uneune thèsethèse avecavec EvansEvans àà l’Universitél’Université d’Utahd’Utah oùoù ilil metmet auau pointpoint unun algorithmealgorithme dede lissagelissage d’ombresd’ombres •• 19711971 :: RR.. GoldsteinGoldstein etet RR.. NagelNagel posentposent lesles basesbases dede lala CSGCSG (Constructive(Constructive SolidSolid GeometryGeometry)) •• 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 lele rendurendu 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. HistoriqueHistorique •• 1979 : James H. Clark conçoit le premier processeur1979 : James H. Clark conçoit le premier processeur programmable 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és graphiquesgraphiques •• 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 Surface ConstructionConstruction 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..00 PourPour plusplus dede détailsdétails :: httphttp:://accad//accad..osuosu..edu/~waynec/history/timelineedu/~waynec/history/timeline..htmlhtml
  • 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. Domaines d’applicationDomaines d’application •• Suivi de processus et Téléopération (online)Suivi de processus et Téléopération (online)
  • 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. Domaines d’applicationDomaines d’application •• Visualisation de donnéesVisualisation de données •• MédicalesMédicales •• GéophysiquesGéophysiques •• BiologiquesBiologiques•• BiologiquesBiologiques
  • 8. Domaines d’applicationDomaines d’application •• Conception assistée par ordinateurConception assistée par ordinateur •• Immersive ou pasImmersive ou pas
  • 9. DéfinitionsDéfinitions •• DéfinitionDéfinition officielleofficielle dede l’infographiel’infographie (office(office dede lala languelangue franç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’INFOrmatiqueINFOrmatique etet GRAPHIqueGRAPHIque •• AppellationAppellation déposéedéposée parpar lala sociétésociété BensonBenson enen 19741974
  • 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 àà partirpartir d’objetsd’objets géométriquesgéométriques dontdont l’expressionl’expression mathématiquemathématique estest connueconnue.. DéfinitionsDéfinitions d’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 auxaux autresautres formentforment unun modèlemodèle géométriquegéométrique completcomplet dede lala scènescène virtuellevirtuelle àà représenterreprésenter etet 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érentes sourcessources dede lumièrelumière dede lala scènescène etet lesles objetobjet.. CetteCette interactioninteraction s’évalues’évalue àà partirpartir desdes caractéristiquescaractéristiques physiquesphysiques desdes objetsobjets etet desdes sourcessources dede lumières,lumières, etet desdes propriétéspropriétés gé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)..
  • 12. Pipeline GraphiquePipeline Graphique Transformations de modélisation Illumination (Shading) Transformations Modèle de laModèle de la scènescène Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage Image 3DImage 3D
  • 13. Transformations de modélisationTransformations de modélisation •Application des transformations de composition de scène : Passage du système de coordonnées local de chaque objet 3D (object space) vers Transformations de modélisation Illumination (Shading) Transformations chaque objet 3D (object space) vers un repère global (world space) Object space World space Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 14. IlluminationIllumination •Les primitives sont éclairées selon leur matériau, le type de surface et les sources de lumière. •Les modèles d’illumination sont Transformations de modélisation Illumination (Shading) Transformations •Les modèles d’illumination sont locaux (pas d’ombres) car le calcul est effectué par primitive : diffus, ambiant, Gouraud, Phong, etc. Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 15. Transformations d’affichageTransformations d’affichage •Passe des coordonnées du monde à celles du point de vue (repère caméra ou eye space). •En général le repère est aligné selon z. Transformations de modélisation Illumination (Shading) Transformations The 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 space World space Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 16. ClippingClipping •Passage en coordonnées normalisées (NDC : normalized device coordinates) Transformations de modélisation Illumination (Shading) Transformations Eye space NDC •Suppression des parties hors du volume de vision. Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 17. Transformation écranTransformation écran •Les primitives 3D sont projetées sur l'espace image 2D (screen space) Transformations de modélisation Illumination (Shading) Transformations NDC Screen Space Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 18. RasterisationRasterisation •Découpe des primitives 2D en pixels •Interpole les valeurs connues aux sommets : couleur, profondeur, etc. pour chaque fragment affiché Transformations de modélisation Illumination (Shading) Transformations pour chaque fragment affichéTransformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 19. Visibilité et affichageVisibilité et affichage •Élimination des parties cachées •Remplissage du frame buffer avec le bon format de couleur. Transformations de modélisation Illumination (Shading) TransformationsTransformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 20. Système de coordonnéesSystème de coordonnées Repère objet Repère scène Transformations de modélisation Illumination (Shading) Transformations Repère caméra Espace écran Repère caméra normalisé (NDC) Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 21. Le pipeline graphiqueLe pipeline graphique •Modèle géométrique : objets, surfaces, sources de lumière… •Modèle d’illumination : calcul des interactions lumineuses Transformations de modélisation Illumination (Shading) Transformations •Caméra : point de vue et ouverture (frustum) •Fenêtre (viewport) : grille de pixel sur laquelle on plaque l’image •Couleurs, intensités convenant à l’afficheur (ex : 24 bits, RVB) Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 22. Le pipeline graphiqueLe pipeline graphique •Chaque primitive passe successivement par toutes les étapes •Le pipeline peut être implémenté de Transformations de modélisation Illumination (Shading) Transformations •Le pipeline peut être implémenté de diverses manières avec des étapes en hardware et d’autres en software •A certaines étapes on peut disposer d’outils de programmation (ex : vertex ou pixel program) Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 23. ImplémentationImplémentation Transformations de modélisation Illumination (Shading) Transformations Software configurable Sans carte graphique 3D Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 24. ImplémentationImplémentation Transformations de modélisation Illumination (Shading) Transformations Software configurable Hardware Cartes graphiques première génération Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage configurable
  • 25. ImplémentationImplémentation Transformations de modélisation Illumination (Shading) Transformations Cartes graphiques deuxième génération Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage Hardware configurable
  • 26. ImplémentationImplémentation Transformations de modélisation Illumination (Shading) Transformations Cartes graphiques troisième génération Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage Hardware programmable
  • 28. ScalaireScalaire •• Un scalaire est une grandeur totalement définie par un nombreUn scalaire est une grandeur totalement définie par un nombre et une unité.et une unité. •• Il a une valeur numérique mais pas d'orientation.Il a une valeur numérique mais pas d'orientation. •• Ex :Ex :•• Ex :Ex : •• MasseMasse •• DistanceDistance •• TempératureTempérature •• VolumeVolume •• DensitéDensité •• Etc.Etc. •• Les scalaires obéissent aux lois de l'algèbre ordinaireLes scalaires obéissent aux lois de l'algèbre ordinaire
  • 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. 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ériques extraites 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 l'orientation du vecteuret l'orientation 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 •• ForceForce 3 2 R Z z y x y x                
  • 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 axe de 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. kzjyixV rrrr ''' ++=
  • 32. VecteurVecteur •• Les vecteurs obéissent aux lois de l'algèbre vectorielleLes vecteurs obéissent aux lois de l'algè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. Produit scalaireProduit scalaire • Le produit scalaire de deux vecteurs est le produit du module du premier par la composante du second dans la direction du premier B r B r θcosA •• Produit scalaire en fonctionProduit scalaire en fonction •• du module et de l’angle :du module et de l’angle : •• des composantes :des composantes : A r θ A r θ θcosB θcos. BABA = rr zzyyxx BABABABA ++= rr .
  • 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 scalaire wvwuwvu ...)( +=+ ).()(. vukvku ×=×
  • 35. Produit scalaireProduit scalaire •• Angle entre deux vecteursAngle entre deux vecteurs θcos. BABA rrrr = zzyyxx BABABABA ++= rr . BA BABABA zzyyxx rr ++ =⇒ θcos •• Signe du produit scalaireSigne du produit scalaire zzyyxx BABABABA ++=. °<<°−⇒> 90900. θBA rr °±=⇒= 900. θBA rr °<<°°−<<°−⇒< 18090901800. θθ ouBA rr
  • 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. Produit vectorielProduit vectoriel • Le module du produit vectoriel de deux vecteurs est le produit du module du premier par la composante du second qui est perpendiculaire au premier. θθθ rrrrrrrr ===× A r B r θ θsinB A r B r θ θsinA • Le produit vectoriel est un vecteur perpendiculaire à A et à B dont le sens est donné par la règle de la main droite. • Le produit vectoriel est nul si les deux vecteur sont parallèles et maximal s’ils sont perpendiculaires. θθθ sin)sin()sin( BAABBABA rrrrrrrr ===× nuBABA rrrrr )sin( θ=× A r B r θ BA rr × nu r
  • 38. Produit vectoriel en fonction des composantes: Produit vectorielProduit vectoriel yx yx zx zx zy zy zyx BB AA k BB AA j BB AA i BBB AAA kji BA rrr rrr rr +−+==× ( ) ( )( ) ( )( ) ( )( ) : 2 4 1 4 1 2 1 2 4 1 5 3 5 3 1 3 1 5 2 5 1 4 1 5 3 4 1 1 3 2 6 17 7 Exemple i j k A B i j k A B i j k A B i j k − − × = − = + − + − − − × = × − − × − − × − × − + × − − × × = − − rr r rr r r r rr r r r rr r r r yxzxzy zyx BBB )()()( yxyxzxzxzyzy ABBAkABBAjABBAiBA −+−−−=× rrrrr
  • 39. Produit vectorielProduit vectoriel •• PropriétésPropriétés •• AnticommutativitéAnticommutativité •• Distributivité sur l'additionDistributivité sur l'addition )()( uvvu ×−=× wvwuwvu ×+×=×+ )(•• Distributivité sur l'additionDistributivité sur l'addition •• Distributivité par un scalaireDistributivité par un scalaire •• NonNon--associativitéassociativité wvwuwvu ×+×=×+ )( kvkukvu ...)( +=+ )()( wvuwvu ××≠××
  • 40. Produit vectorielProduit vectoriel •• ApplicationApplication •• Calcul de la normale à un planCalcul de la normale à un plan
  • 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. A r BA rr + •• Algébriquement cela se met en oeuvre en additionnant lesAlgébriquement cela se met en oeuvre en additionnant les composantes individuellement.composantes individuellement. B r kbjbibB kajaiaA zyx zyx rrrr rrrr ++= ++= kbajbaibaBA zzyyxx rrrrr )()()( +++++=+
  • 42. Addition de deux vecteursAddition de deux vecteurs Un vecteur A peut être décomposé en ses composantes rectangulaires Ax et Ay. cos sin x A y A A A A A θ θ = = Il est possible d’additionner des vecteurs en additionnant les composantes de ces vecteur. 2 2 cos sin cos sin x A y A x B y B x x x y y y y x y R x A A A A B B B B R A B R A B R R R R tg R θ θ θ θ θ = = = = = + = + = + =
  • 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 composantes d’un vecteur forment toujours des triangles rectangles deux à deux.d’un vecteur forment toujours des triangles rectangles deux à deux. jyixV rrr '' += •• 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 du triangle rectangle soient les projections du vecteur dans un soustriangle rectangle soient les projections du vecteur dans un sous--espace de dimensionespace de dimension nn––1 et dans l’axe de la dimension manquante.1 et dans l’axe de la dimension manquante. •• La norme d'un vecteur AB est la distance de A à BLa norme d'un vecteur AB est la distance de A à B ix r ' jy r ' V r 22 )'()'( yxV += r 222 )'()'()'( zyxV ++= r
  • 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, avec la 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 composantes par sa norme.par sa norme. 222 )'()'()'( ''' zyx kzjyix V V ++ ++ = rrr r r ) )'()'()'( ' , )'()'()'( ' , )'()'()'( ' ( 222222222 zyx z zyx y zyx x Vn ++++++ = r )'()'()'( zyxV ++ V r nV r nVVV rrr .=
  • 45. MatriceMatrice •• On appelle matrice M un tableau à deux indices de n*m valeursOn appelle matrice M un tableau à deux indices de n*m valeurs numériques extraites du même ensemble E.numériques extraites du même ensemble E. mmmmm mmmmm       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 colonnes de la matrice.de la matrice. •• Si n = m la matrice est dite carrée.Si n = m la matrice est dite carrée. R mmmmm mmmmm mmmmm             4444434241 3434333231 2424232221
  • 46. MatriceMatrice •• Opération possibleOpération possible •• AdditionAddition •• MatriceMatrice--matricematrice •• ScalaireScalaire--matricematrice MultiplicationMultiplication•• MultiplicationMultiplication •• MatriceMatrice--matricematrice •• MatriceMatrice--vecteurvecteur •• ScalaireScalaire--matricematrice •• InversionInversion •• TranspositionTransposition
  • 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. VMW rr .=W r M V r V r M •• 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. nivmw n k kiki ≤≤=∑ = 1.1 m x nm x n n x 1n x 1 m x 1m x 1
  • 48. Produit matrice par vecteurProduit matrice par vecteur •• ExempleExemple
  • 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 formule suivante :suivante : 1M 2M suivante :suivante : )1,1(2.11 pjnimmm m k kjikij ≤≤≤≤=∑ = n x mn x m m x pm x p n x pn x p
  • 50. Produit matrice par matriceProduit matrice par matrice •• ExempleExemple
  • 51. Espace vectorielEspace vectoriel -- Espace affineEspace affine •• UnUn espaceespace vectorielvectoriel estest l’espacel’espace oùoù viventvivent lesles vecteursvecteurs (déplacements(déplacements ouou directions)directions).. SesSes principalesprincipales propriétéspropriétés sontsont l’existencel’existence d’und’un vecteurvecteur nulnul etet lala stasta bilité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 desquelsdesquels onon définitdéfinit lesles objetsobjets géométriquesgéométriques usuelsusuels (droites,(droites, ......)).. IlIl sese construitconstruit àà partirpartir d’und’un pointpoint dede référenceréférence (l’origine)(l’origine) etet d’und’un espaceespace vectorielvectoriel (déplacements(déplacements autorisésautorisés àà partirpartir dede cece point)point)..
  • 52. TransformationsTransformations Linéaire Affine Projective Similitude Translation Rotation Rigide / Euclidienne Linéaire Similitude Homothétie isotrope Homothétie Reflection Perspective Identité
  • 53. TransformationsTransformations Linéaire Affine Projective Similitude Translation Rotation Rigide / Euclidienne Linéaire Similitude Homothétie isotrope Homothétie Reflection Perspective Identité
  • 54. TransformationsTransformations •• Transformations Euclidiennes rigides : 6 DDLTransformations Euclidiennes rigides : 6 DDL •• Rotation (3DDL), Translation (3DDL).Rotation (3DDL), Translation (3DDL). •• PropriétésPropriétés Préservent les angles.Préservent les angles.•• Préservent les angles.Préservent les angles. •• Préservent les distances.Préservent les distances.
  • 55. TransformationsTransformations Linéaire Affine Projective Similitude Translation Rotation Rigide / Euclidienne Linéaire Similitude Homothétie isotrope Homothétie Reflection Perspective Identité
  • 56. TransformationsTransformations •• Similitudes : 7 DDLSimilitudes : 7 DDL •• Rotation (3DDL), Translation (3DDL), HomothétieRotation (3DDL), Translation (3DDL), Homothétie isotrope (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, un carré reste un carré, etc.) • Généralisation des transformations Euclidiennes et Homothétie
  • 57. TransformationsTransformations Linéaire Affine Projective Similitude Translation Rotation Rigide / Euclidienne Linéaire Similitude Homothétie isotrope Homothétie Reflection Perspective Identité
  • 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. TransformationsTransformations Linéaire Affine Projective Similitude Translation Rotation Rigide / Euclidienne Linéaire Similitude Homothétie isotrope Homothétie Reflection Perspective Identité
  • 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és Pré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. TransformationsTransformations Linéaire Affine Projective Similitude Translation Rotation Rigide / Euclidienne Linéaire Similitude Homothétie isotrope Homothétie Reflection Perspective Identité
  • 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(3DD L), 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. Transformations de modélisationTransformations de modélisation •Application des transformations de composition de scène : Passage du système de coordonnées local de chaque objet 3D (object space) vers Transformations de modélisation Illumination (Shading) Transformations chaque objet 3D (object space) vers un repère global (world space) Object space World space Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 64. Les transformations élémentairesLes transformations élémentairesLes transformations élémentairesLes transformations élémentaires
  • 65. TransformationsTransformations •• Utilisations :Utilisations : •• Déplacement d'un objet dans une scèneDéplacement d'un objet dans une scène •• Déplacement d'un observateur par rapport a une scèneDéplacement d'un observateur par rapport a une scène •• Réplication d'un motif ou d'un objetRéplication d'un motif ou d'un objet •• Déformation d'un objetDéformation d'un objet •• ProjectionProjection •• etc.etc.
  • 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 à tous ses sommetsses sommets T+RT+R
  • 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       = i i i y x p       = i ii z yp
  • 68. TransformationsTransformations •• Translation :Translation : •• Ajouter aux coordonnées du sommet la valeur de la translationAjouter aux coordonnées du sommet la valeur de la translation ixi yTy xTx += += ' ' •• Notation matricielleNotation matricielle •• Addition du vecteur de translationAddition du vecteur de translation           +           =           i i i z y x i i i z y x T T T z y x ' ' ' izi iyi zTz yTy += += ' ' T p(x,y) p’(x’,y’) Tx Ty
  • 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 vectorielle zizii yxy yxx −= −= cos.sin.' sin.cos.' θθ θθ zθ •• Notation matricielleNotation matricielle •• Multiplication par la matrice de rotationMultiplication par la matrice de rotation ii zizii zz yxy = −= ' cos.sin.' θθ                     − =           i i i zz zz i i i z y x z y x 100 0cossin 0sincos ' ' ' θθ θθ p(x,y) p’(x’,y’) xx’ y’ y θz
  • 70. TransformationsTransformations •• HomothétieHomothétie •• Multiplication par les facteurs d’échellesMultiplication par les facteurs d’échelles iyi ixi ySy xSx .' .' = = •• Notation matricielleNotation matricielle •• Multiplication par la matrice d’HomothétieMultiplication par la matrice d’Homothétie                     =           i i i z y x i i i z y x S S S z y x 00 00 00 ' ' ' izi zSz .' = p(x,y) p’(x’,y’) xSx. x Sy. y y
  • 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 (tra nslation, 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. Coordonnées homogènesCoordonnées homogènes •• LesLes coordonnéescoordonnées homogèneshomogènes sontsont utiliséesutilisées enen synthèsesynthèse d'imaged'image afinafin d'unifierd'unifier lele traitementtraitement desdes transformationstransformations géométriquesgéométriques d'uned'une scènescène etet dede lesles regrouperregrouper dansdans uneune seuleseule matricematrice.. EnEn effet,effet, sisi l'onl'on utiliseutilise uneune matricematrice 22**22 pourpour lesles scènesscènes bidimensionnellesbidimensionnelles etet uneune matricematrice 33**33 pourpour lesles scè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 utiliserutiliser desdes 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)) 3x33x3 1x31x3 3x13x1 1x11x1 RotationRotation et changementet changement d’échelled’échelle PerspectivePerspective HomothétieHomothétie TranslationTranslation
  • 73. Coordonnées homogènesCoordonnées homogènes •• Ainsi, si (x,y,z) sont les coordonnées d'un point de la scène à transformer etAinsi, si (x,y,z) sont les coordonnées d'un point de la scène à transformer et MMHH la 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 d'elle étant associée à un typematrices, chacune d'elle étant associée à un type de transformation.de transformation.
  • 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ée s homogènes.s homogènes. •• Le Point transformé de par la matrice est :Le Point transformé de par la matrice est : p M 'p 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 .'=
  • 76. Rotations (angles d’Euler)Rotations (angles d’Euler)       =               = × ×× 10 0 1000 0 0 0 31 1333 333231 232221 131211 R RRR RRR RRR R               −               −               − == 1000 0100 00cossin 00sincos . 1000 0cos0sin 0010 0sin0cos . 1000 0cossin0 0sincos0 0001 .. zz zz yy yy xx xx zyx RRRR θθ θθ θθ θθ θθ θθ                             == 1 . 1000 0 0 0 .' 333231 232221 131211 z y x RRR RRR RRR PRP
  • 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ée homogéne cos(Ө) 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. Homothétie isotropeHomothétie isotrope       =             = × ×× 10 0 1000 000 000 000 31 1333S S S S R       1000 PS zS yS xS z y x S S S PSP . 1 . . . 1 . 1000 000 000 000 .' =               =                             ==
  • 79. Homothétie : Affinités orthogonalesHomothétie : Affinités orthogonales       =               = × ×× 10 0 1000 000 000 000 31 1333S S S S R z y x xSxS .000  PS zS yS xS z y x S S S PSP z y x z y x . 1 . . . 1 . 1000 000 000 000 .' =               =                             ==               1000 0100 0010 000xS               1000 000 0010 0001 zS               1000 0100 000 0001 yS Affinité d'axe x par rapportAffinité d'axe x par rapport au plan yOzau plan yOz Affinité d'axe y par rapportAffinité d'axe y par rapport au plan xOzau plan xOz Affinité d'axe z par rapportAffinité d'axe z par rapport au plan xOyau plan xOy
  • 80. GlissementGlissement •• Appelée aussiAppelée aussi shearshear ou cisaillement : étirement suivant un axeou cisaillement : étirement suivant un axe •• La matrice d'un glissement parallèle à x et de rapport k est :La matrice d'un glissement parallèle à x et de rapport k est :         0100 0010 001 k •• La matrice d'un glissement parallèle à x, de rapport k et de ligne de base y = yLa matrice d'un glissement parallèle à x, de rapport k et de ligne de base y = yrefref est :est :         1000 0100               − 1000 0100 0010 0.1 refykk refy
  • 82. (0,0) (1,1) (2,2) (0,0) (5,3) (3,1) Scale(2,2) Translate(3,1) Composition de Transformations Exemple :Exemple : (0,0) (0,0) Multiplication de matrices :Multiplication de matrices : p'p' == TT .(.( SS ..pp ) = T.S .) = T.S .pp           =                     = 100 120 302 100 020 002 . 100 110 301 .ST
  • 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-commutatif Composition de Transformations translation 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.           =                     = 100 120 302 100 020 002 . 100 110 301 )2,2().1,3( ST Composition de Transformations           =                     =             100 220 602 100 110 301 . 100 020 002 )1,3().2,2( 100100100 TS
  • 85. p’ = M . p et p" = M’. p’ => Cas général Composition de Transformations => p" = M’ . M . p ou p" = M" . p avec M" = M’ . M
  • 86. Ordre d’Application Composition de Transformations p" = 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 de droite à gauchedroite à gauche, et non dans le sens de la lecture, et non dans le sens de la lecture
  • 87. Composition de Transformations •• Les transformations élémentaires sont définies parLes transformations élémentaires sont définies par rapport à 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>O 2.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. Exemple 1 : On désire établir la transformation consistant à effectuer une rotation de Өz radians autour de l'axe colinéaire à z passant par le point P de coordonnées (Tx,Ty,Tz). Composition de Transformations par le point P de coordonnées (Tx,Ty,Tz). ZZ XX YY R(θz)
  • 89. Cette transformation M est réalisée en amenant p à l'origine par une translation T de -p, puis en effectuant une rotation R d'angle Өz autour de l'axe Oz, et enfin en ramenant p à sa position initiale par une translation T' de p : p’ = (T(x,y,z) . R(θz) . T(-x,-y,-z) ) . p = M . p Composition de Transformations ZZ XX YY ( z ) ZZ XX YY T(-x,-y,-z) T(x,y,z) R(θz)
  • 90. Composition de Transformations               − − −               −               = 1000 100 010 001 . 1000 0100 00cossin 00sincos . 1000 100 010 001 z y x zz zz z y x T T T T T T M θθ θθ               ++− ++−− =               − +− +−−               =  1000 0100 cossin0cossin sincos0sincos 1000 100 cossin0cossin sincos0sincos . 1000 100 010 001 100010001000 yzyzxzz xzyzxzz z zyzxzz zyzxzz z y x TTT TTT M T TT TT T T T M θθθθ θθθθ θθθθ θθθθ
  • 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. 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 des objets 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 absolue par 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 transformation relative 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 po sitionne 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)
  • 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") dans lequel on effectue une décomposition récursive du modèlelequel on effectue une décomposition récursive du modèle gé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 pour aboutir aux nœudsaboutir aux nœuds
  • 96. Modélisation hiérarchiqueModélisation hiérarchique Maison Tm TcTg Fenêtre 1Porte Facade Garage Corps Principal Fenêtre 2 Fenêtre 3 Fenêtre 4 Fenêtre 5 Toit Tva Tfa Tf1 Vitre a Tga Tgb
  • 97. Modélisation hiérarchiqueModélisation hiérarchique porte a du garage Tm.Tg.Tga Pile de transformationsPile de transformations porte b du garage vitre a etc . . . . Tm.Tg.Tgb Tm.Tc.Tfa.Tf1.Tva
  • 98. Changement de repèreChangement de repère •• Permet de transformer les coordonnées d'un point expriméesPermet de transformer les coordonnées d'un point exprimées dans un premier repère en coordonnées exprimées dansdans un premier repère en coordonnées exprimées dans deuxiè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. 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 RR11 ZZ XX RR11 ZZ11 YY11 XX11 RR22 ZZ22 YY22 XX22 MM
  • 100. Changement de repèreChangement de repère 12 .pMp = 21312111 x xTRRRx             21 1 . 10001 2 2 12 333231 232221 1 1 R z y R z y TRRR TRRR z y                         =             → 12 333231 232221 131211 1000 →               = z y x TRRR TRRR TRRR M
  • 101. Changement de repèreChangement de repère ZZ11 ZZ22 XX22 ӨӨzz 0 RRR RR11 YY11 XX11 RR22 ZZ22 YY22 XX22 ӨӨzz ӨӨyy ӨӨxx 12 333231 232221 131211 1000 0 0 0 →               RRR RRR RRR
  • 102. Changement de repèreChangement de repère ZZ11 ZZ22 XX22 RR11 YY11 XX11 RR22 YY22 TT 12 333231 232221 131211 1000 →               z y x TRRR TRRR TRRR
  • 103. Changement de repèreChangement de repère •• Passage du repère R1 au repère R2Passage du repère R1 au repère R2 ZZ11 RR22 ZZ22 XX22 M’M’ RR11 YY11 XX11 RR22 YY22 2 1 121 .'. pMppMp − =⇒= 1122 1 . 10001 1 1 1 1 333231 232221 131211 2 2 2 R z y x R z y x TRRR TRRR TRRR z y x                             =               − →
  • 104. La projectionLa projectionLa projectionLa projection
  • 105. Transformation écranTransformation écran •Les primitives 3D sont projetées sur l'espace image 2D (screen space) Transformations de modélisation Illumination (Shading) Transformations NDC Screen Space Transformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 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. AAAA BB aa bb
  • 107. XXXX •• On note que la projection d'une droite en 3D est une droite en 2D.On note que la projection d'une droite en 3D est une droite en 2D. •• Il est suffisant de projeter les sommets d'une droite 3D et puis de tracer la droiteIl est suffisant de projeter les sommets d'une droite 3D et puis de tracer la droite 2D entre ces projections.2D entre ces projections.
  • 108. La projectionLa projection •• LesLes projectionsprojections desdes objetsobjets sontsont forméesformées parpar lesles intersectionsintersections dede ligneslignes appelé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.. ProjecteursProjecteurs Centre de projectionCentre de projection (CP)(CP) Plan de projectionPlan de projection AA BB aa bb
  • 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’es pace tridimensionnel, le résultat est une projection en perspectipace tridimensionnel, le résultat est une projection en perspecti ve.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èles et le résultat est une projection parallèle.et le résultat est une projection parallèle. AA BB aa bb AA BB aa bb Projection perspectiveProjection perspective projection parallèleprojection parallèle
  • 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. 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 de projection (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 une direction 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 direction de projection soit perpendiculaire au plan de projection :de projection soit perpendiculaire au plan de projection : •• Projections orthographiquesProjections orthographiques •• Projections obliquesProjections obliques objetobjet projetéprojeté projectionprojection de l’objetde l’objet DPDP
  • 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 image Plan de projectionPlan de projection Plan de projectionPlan de projection
  • 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. Projection orthographiqueProjection orthographique •• La projection orthographique consiste à supprimer uneLa projection orthographique consiste à supprimer une dimensiondimension •• La dimension supprimée est celle suivant laquelle on réaliseLa dimension supprimée est celle suivant laquelle on réalise la projectionla projection Axe de projectionAxe de projection ZZ XX XX ppP’P’ Plan de projectionPlan de projection
  • 115. Projection orthographiqueProjection orthographique •• Forme matricielle :Forme matricielle : = .' pMp PZ                             =               1 . 1000 0000 0010 0001 1 0 ' ' z y x y x
  • 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 de s plans perpendiculaires aux axes des coordonnées en mettant une des plans perpendiculaires aux axes des coordonnées en mettant une de s coordonnées du point à 0.s coordonnées du point à 0.               =               =               = 1000 0000 0010 0001 1000 0100 0000 0001 1000 0100 0010 0000 PZPYPX MMM Elimination de la dimension suivant la quelle nous réalisons la projectionElimination de la dimension suivant la quelle nous réalisons la projection
  • 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 des coordonnés, donc plusieurs facettes de l’objet sont montrées encoordonnés, donc plusieurs facettes de l’objet sont montrées en même temps.même temps.même temps.même temps.
  • 118. Projection obliqueProjection oblique •• Direction de la projection n’est pas perpendiculaire au planDirection de la projection n’est pas perpendiculaire au plan de projectionde projection •• DP coupe le plan de projection en faisant un angle obliqueDP coupe le plan de projection en faisant un angle oblique avec 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.
  • 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 inversement avec 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élisme des 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èles non parallèles au plan de projection convergent vers un mêmenon parallèles au plan de projection convergent vers un même pointpoint •• Le point de fuite.Le point de fuite. AA BB aa bb dd dd00
  • 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 droite parallèle à D.parallèle à D.
  • 123. Projection perspectiveProjection perspective •• On différencie les projections en perspective par le nombreOn différencie les projections en perspective par le nombre de 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. Projection perspectiveProjection perspective •• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique
  • 125. Projection perspectiveProjection perspective •• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique XX Plan dePlan de⇒ +− = fz x f xp --zz++dd xx xxpp ffzz ZZ Plan dePlan de projectionprojection Centre deCentre de projectionprojection 1 . +− = ⇒ +− = ⇒ +− = f z x x fz fx x fzf p p
  • 126. Projection perspectiveProjection perspective •• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique YY Plan dePlan de⇒ +− = fz y f yp yy yypp ff --zz++dd zz ZZ Plan dePlan de projectionprojection Centre deCentre de projectionprojection 1 . +− = ⇒ +− = ⇒ +− = f z y y fz fy y fzf p p
  • 127. Projection perspectiveProjection perspective •• Représentation en forme matricielle :Représentation en forme matricielle : ⇒ +− = +− = 1 , 1 f z y y f z x x pp ⇒                             −=               +−+− 1 . 1000 1 100 0010 0001 ' ' ' ' 11 z y x f w z y x ff
  • 129. Projection perspectiveProjection perspective Plan dePlan de projectionprojection ffzz ZZ Centre deCentre de projectionprojection z’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. Projection perspectiveProjection perspective Plan dePlan de projectionprojection ff22 zz ZZ Centre deCentre de projectionprojection ff11 La 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 projection au plan de projectionau plan de projection
  • 131. Projection perspectiveProjection perspective • Plus f est large, plus la projection tend vers une projection parallèle, où la profondeur a un petit effet dans les points projetés et moins de sensation dans la perspective obtenue. • Plus f est petit, plus la projection diverge de la projection parallèle. La profondeur a une influence considérable sur les points projetés à la limite de créer des effets de perspective exagérés.
  • 132. Projection perspectiveProjection perspective •• Transformations nécessairesTransformations nécessaires
  • 136. Projection perspectiveProjection perspective                01312110010001 cx xrrrt Passage du repère monde au plan imagePassage du repère monde au plan image                                                                   =           1 . 1000 0333231 0232221 0131211 . 1000 100 010 001 . 1 1 00 0100 0010 0001 . 1111 111 001 1 0 0 c c c z y x z y x rrr rrr rrr t t t f v u v u                                       =           1 . 1000 333231 232221 131211 . 1111 01 00 1 0 0 c c c z y x z y x trrr trrr trrr vf uf v u
  • 137. RasterisationRasterisation •Découpe des primitives 2D en pixels •Interpole les valeurs connues aux sommets : couleur, profondeur, etc. pour chaque fragment affiché Transformations de modélisation Illumination (Shading) Transformations pour chaque fragment affichéTransformations d’affichage Clipping Transformation écran ((Projection) Pixelisation (Rasterization) Visibilité / Affichage
  • 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. Tracé de segments de droitesTracé de segments de droites •• Algorithme de base pour beaucoup de traitements de l'InformatiqueAlgorithme de base pour beaucoup de traitements de l'Informatique Graphique: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. 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 soit par l'un de ses cotés (4par l'un de ses cotés (4--connexité), soit par un de ses sommetsconnexité), soit par un de ses sommetspar l'un de ses cotés (4par l'un 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. Tracé de segments par l'équationTracé de segments par l'équation carté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 s'y rapporter.Tous les autres cas peuvent s'y rapporter.•• Tous les autres cas peuvent s'y rapporter.Tous les autres cas peuvent s'y rapporter. •• On utilise l’équation cartésienne de la droite :On utilise l’équation cartésienne de la droite : 11 12 12 )( )( axyb xx yy a avec baxy += − − = +=
  • 142. Tracé de segments par l'équationTracé de segments par l'équation cartésiennecartésienne DroiteSimple(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. Tracé de segments par l'équationTracé de segments par l'équation cartésiennecartésienne •• Incrémentation suivant l’axe xIncrémentation suivant l’axe x DroiteSimple(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.25 b = yb = y –– a . xa . x ;; // b =// b = --0.250.25 Tracé : (1,1) à (5,6) b = yb = y11 –– a . xa . x11 ;; // b =// b = --0.250.25 xx <<-- 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) ; }} }} xx yy (1,1) (2,2) (3,3) (4,4) (5,6)
  • 144. Tracé de segments par l'équationTracé de segments par l'équation cartésiennecartésienne •• Incrémentation suivant l’axe yIncrémentation suivant l’axe y DroiteSimple(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.25 b = yb = y –– a . xa . x ;; // b =// b = --0.250.25 Tracé : (1,1) à (5,6) b = yb = y11 –– a . xa . x11 ;; // b =// b = --0.250.25 xx <<-- 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) ; }} }} xx yy (1,1) (1,2) (2,3) (3,4) (4,5) (5,6)
  • 145. Tracé de segments par l'équationTracé de segments par l'équation cartésiennecartésienne •• Il faut switcher entre les deux versions en fonction de lIl faut switcher entre les deux versions en fonction de l a pente de la droitea pente de la droite •• Pente < 1 : version xPente < 1 : version x •• Pente > 1 : version yPente > 1 : version y version : yversion : y version : xversion : x
  • 146. Tracé de segments par l'équationTracé de segments par l'équation cartésiennecartésienne •• Caractéristiques:Caractéristiques: •• Simplicité algorithmiqueSimplicité algorithmique•• Simplicité algorithmiqueSimplicité algorithmique •• Lenteur due à l'utilisation de réels, d'une divisionLenteur due à l'utilisation de réels, d'une division et de multiplications et d’opérations d’arrondissement (cast)et de multiplications et d’opérations d’arrondissement (cast)
  • 147. Algorithmes de BresenhamAlgorithmes de Bresenham xk xk+1 xk+2 xk+4xk+3 yk Jack Bresenham 1962
  • 148. Algorithmes de BresenhamAlgorithmes de Bresenham d1d1--d2 > 0 ?d2 > 0 ? xk xk+1 xk+2 xk+4xk+3 yk d1 d2 d1d1--d2 > 0d2 > 0
  • 149. Algorithmes de BresenhamAlgorithmes de Bresenham xk xk+1 xk+2 xk+4xk+3 yk yk+1 d1 d2 d1d1--d2 = 0d2 = 0
  • 150. Algorithmes de BresenhamAlgorithmes de Bresenham d2 xk xk+1 xk+2 xk+4xk+3 yk d1 d2 yk+1 d1d1--d2 < 0d2 < 0
  • 151. Algorithmes de BresenhamAlgorithmes de Bresenham xk xk+1 xk+2 xk+4xk+3 yk
  • 152. Algorithmes de BresenhamAlgorithmes de Bresenham DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)) {{ dx = / xdx = / x22 –– xx11 dy = ydy = y22 –– yy11 xx <<-- 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 ; }} elseelse e = e + IncH ;e = e + IncH ; }} }}
  • 153. Algorithmes de BresenhamAlgorithmes de Bresenham Principe : • 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 NE Pixel NEPixel NE Pixel EPixel E Pixel NEPixel NE Pixel EPixel E ee ee
  • 154. Algorithmes de BresenhamAlgorithmes de Bresenham e = 0e = 0 x= xx= x11 y= yy= y11
  • 155. Algorithmes de BresenhamAlgorithmes de Bresenham e = 0e = 0 x= xx= x11 y= yy= y11
  • 156. Algorithmes de BresenhamAlgorithmes de Bresenham e = 0e = 0 x= xx= x11 y= yy= y11
  • 157. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dxe = dy/dx x= xx= x11 y= yy= y11
  • 158. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 => x= x+1x= x+1 y= yy= y
  • 159. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 => x= x+1x= x+1 y= yy= y
  • 160. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dxe = dy/dx
  • 161. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dx ; e>0.5 =>e = dy/dx + dy/dx ; e>0.5 => x= x+1x= x+1 y= y+1y= y+1
  • 162. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 11 x= x+1x= x+1 y= y+1y= y+1
  • 163. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
  • 164. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 11
  • 165. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx ; e<0.5 =>1 + dy/dx ; e<0.5 => x= x+1x= x+1 y= yy= y
  • 166. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx1 + dy/dx
  • 167. Algorithmes de BresenhamAlgorithmes de Bresenham e = 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+1 y= yy= y
  • 168. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
  • 169. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx1 + dy/dx + dy/dx
  • 170. Algorithmes de BresenhamAlgorithmes de Bresenham e = 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+1 y= yy= y
  • 171. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx
  • 172. Algorithmes de BresenhamAlgorithmes de Bresenham e = dy/dx + dy/dxe = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx
  • 173. Algorithmes de BresenhamAlgorithmes de Bresenham e = 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+1 y= y+1y= y+1
  • 174. Algorithmes de BresenhamAlgorithmes de Bresenham e = 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+1 y= y+1y= y+1
  • 175. Algorithmes de BresenhamAlgorithmes de Bresenham e = 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. Algorithmes de BresenhamAlgorithmes de Bresenham e = 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. Algorithmes de BresenhamAlgorithmes de Bresenham •• Algorithme de baseAlgorithme de base DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)) {{ dx = / xdx = / x22 –– xx11 dy = ydy = y22 –– yy11 a = 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. Algorithmes de BresenhamAlgorithmes de Bresenham •• supprimer la division parsupprimer la division par ddxx DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)) {{ dx = / xdx = / x22 –– xx11 dy = ydy = y22 –– yy11 xx <<-- 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. Algorithmes de BresenhamAlgorithmes de Bresenham •• division par 2 à supprimerdivision par 2 à supprimer DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)) {{ dx = / xdx = / x22 –– xx11 dy = ydy = y22 –– yy11 xx <<-- 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. Algorithmes de BresenhamAlgorithmes de Bresenham •• optimisations pour rendre l'algorithme plus rapideoptimisations pour rendre l'algorithme 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 nombre DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)) {{ dx = / xdx = / x22 –– xx11 dy = ydy = y22 –– yy11 xx <<-- 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. Algorithmes de BresenhamAlgorithmes de Bresenham •• modifier e qu'une seule fois lors de chaque itérationmodifier e qu'une seule fois lors de chaque itération DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)) {{ dx = / xdx = / x22 –– xx11 dy = ydy = y22 –– yy11 xx <<-- 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) ; }} elseelse e = e + 2 . dy ;e = e + 2 . dy ; }} }}
  • 182. Algorithmes de BresenhamAlgorithmes de Bresenham •• calculer d'avance les deux incréments possibles pour e : déplacement horizontal ou diagonalcalculer d'avance les deux incréments possibles pour e : déplacement horizontal ou diagonal DroiteBresenham(int xDroiteBresenham(int x11,,int xint x22,,int yint y11,,int yint y22)) {{ dx = / xdx = / x22 –– xx11 dy = ydy = y22 –– yy11 xx <<-- 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 ; }} elseelse e = e + IncH ;e = e + IncH ; }} }}
  • 183. Algorithmes de BresenhamAlgorithmes de Bresenham •• Caractéristiques :Caractéristiques : •• Plus grande complexité algorithmique.Plus grande complexité algorithmique. •• Rapidité due àRapidité due à •• Utilisation exclusive d'entiers courts (valeurs maximales de l'ordreUtilisation exclusive d'entiers courts (valeurs maximales de l'ordre de 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. Tracé de cerclesTracé de cercles
  • 185. Tracé de cerclesTracé de cercles
  • 186. Tracé de cerclesTracé de cercles
  • 187. Tracé de cerclesTracé de cercles
  • 188. Tracé de cerclesTracé de cercles
  • 189. Tracé de cerclesTracé de cercles
  • 190. Tracé de cerclesTracé de cercles
  • 191. Tracé de cerclesTracé de cercles
  • 192. Tracé de cerclesTracé de cercles d2d2 d1d1 d1>d2d1>d2
  • 193. Tracé de cerclesTracé de cercles
  • 194. Tracé de cerclesTracé de cercles d2d2 d1>d2d1>d2 d1d1 d2d2
  • 195. Tracé de cerclesTracé de cercles
  • 196. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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. Algorithmes de BresenhamAlgorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles
  • 198. Algorithmes de BresenhamAlgorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles
  • 199. Algorithmes de BresenhamAlgorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles
  • 200. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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),( >yxf 0),( =yxf 0),( <yxf
  • 201. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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 MM E Q (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 MM SE
  • 203. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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 MM E(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 MM SE Q
  • 205. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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 MM SE E Q
  • 207. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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. Algorithmes de BresenhamAlgorithmes de Bresenham pour 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 de décision du pixel suivantdécision du pixel suivant eeii = 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+ 3 MM SE E Q (x(xii, y, yii))
  • 209. Algorithmes de BresenhamAlgorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles CerclePointMilieu(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 = r double 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 2 if(e < 0)if(e < 0) // pixel suivant E// pixel suivant E e = e + 2 . x + 3 ;e = e + 2 . x + 3 ; else{else{ // pixel suivant SE// pixel suivant SE e = 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. •• 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)
  • 211. •• OptimisationOptimisation •• Au départAu départ •• ee00 = 5.0/4.0= 5.0/4.0 –– r = 1.25r = 1.25 –– rr •• Si eSi eii < 0 alors on va à «< 0 alors on va à « EE »» •• eei+1i+1 = e= eii + 2 . x+ 2 . xii + 3 ;+ 3 ; •• Sinon eSinon eii > 0 alors on va à «> 0 alors on va à « SESE »» •• eei+1i+1 = e= eii + 2 . x+ 2 . xii –– 2 . y2 . yii + 5 ;+ 5 ;
  • 212. Algorithmes de BresenhamAlgorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles • Si on pose hi = ei – 0.25, on peut remplacer l’initialisation par: h0 = 1 – r • On devrait donc aussi modifier la comparaison « if(e < 0)if(e < 0) »» par :if(e < 0)if(e < 0) »» if (hi < - 0.25){ • Cependant, on remarque que hi sera toujours un entier donc : hi < - 0.25 => hi < 0 • On peut donc seulement changer l’initialisation et remplacer ei par hi ailleurs
  • 213. Algorithmes de BresenhamAlgorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles CerclePointMilieu(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 = r double h = 1double h = 1 –– 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) AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ; While (y > x) {While (y > x) { // octant 2// octant 2 if(h < 0)if(h < 0) // pixel suivant E// pixel suivant E h = h + 2 . x + 3 ;h = h + 2 . x + 3 ; else{else{ // pixel suivant SE// pixel suivant SE h = h + 2 . xh = h + 2 . x –– 2 . y + 5 ;2 . y + 5 ; y = yy = y –– 1 ;1 ; }} AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ; x = x + 1 ;x = x + 1 ; }} }}
  • 214. Anticrenelage (antialiasing)Anticrenelage (antialiasing) •• LesLes algorithmesalgorithmes dede tracétracé présentésprésentés précédemmentprécédemment ontont unun problèmeproblème communcommun dede précisionprécision.. •• LaLa discrétisationdiscrétisation impliqueimplique uneune perteperte d’informationsd’informations quiqui sese traduittraduit parpar desdes contourscontours enen formeforme dede marchesmarches d’escaliersd’escaliers.. •• CetteCette perteperte d’informationsd’informations estest bienbien connuconnu enen traitementtraitement dudu signalsignal (analyse(analyse dede Fourier)Fourier) etet lele termeterme aliasingaliasing quiqui enen estest issuissu estest utiliséutilisé enen graphismegraphisme pourpour caractérisercaractériser cesces artefactsartefacts dansdans lesles imagesimages produitesproduites :: MoiréesMoiréescaractérisercaractériser cesces artefactsartefacts dansdans lesles imagesimages produitesproduites :: MoiréesMoirées •• L’antialiasingL’antialiasing consisteconsiste alorsalors àà corrigercorriger (diminuer)(diminuer) cesces effetseffets..
  • 216. Anticrenelage (antialiasing)Anticrenelage (antialiasing) •• Les deux principales solutions :Les deux principales solutions : •• SurSur--échantillonnage de l’imageéchantillonnage de l’image •• Algorithmes de tracé de segments corrigésAlgorithmes de tracé de segments corrigés
  • 217. SurSur--échantillonnage de l’imageéchantillonnage de l’image •• CetteCette méthodeméthode consisteconsiste àà calculer,calculer, dansdans unun premierpremier temps,temps, uneune imageimage virtuellevirtuelle àà uneune résolutionrésolution plusplus importanteimportante queque cellecelle dede l’imagel’image désiréedésirée (en(en mémoiremémoire maismais nonnon àà l'écran),l'écran), enen pratiquepratique XX33,, XX55 ouou XX77,, puispuis dede réduireréduire cettecette imageimage parpar filtragefiltrage ::cettecette imageimage parpar filtragefiltrage :: •• L’intensitéL’intensité dede chaquechaque pixelpixel dede l’imagel’image finalefinale estest déterminéedéterminée parpar moyennagemoyennage pondérépondéré ouou parpar filtragefiltrage (filtre(filtre passepasse--basbas parpar convolution)convolution) dede plusieursplusieurs pixelspixels dede l’imagel’image sursur--échantillonnéeéchantillonnée..