Génération d’un segment de droite

Slides:



Advertisements
Présentations similaires
Unité 1: La dynamique 2. Mouvement rectiligne B. Vitesse uniforme
Advertisements

La Méthode de Simplexe Standardisation
Chapitre annexe. Récursivité
Fonctions & procédures
RENDU DE TERRAIN Problématique : Rendre une très large zone de terrains en la simplifiant au maximum pour réduire le nombre de polygones à afficher. A.Bailly.
Regroupement (clustering)
Calculs de complexité d'algorithmes
Programme de seconde 2009 Géométrie
Vérifier les Droites Parallèles
Exercices Algorithmiques
A Pyramid Approach to Subpixel Registration Based on Intensity
SYMETRIE CENTRALE OU SYMETRIE PAR RAPPORT A UN POINT.
INTERFERENCES Des interférences se produisent lorsque deux ou plusieurs mouvements vibratoires de mêmes fréquences et de différence de phase nulle ou de.
Intégrales 1 - Intégrale simple 2 - Deux directions de généralisation
Bouyekhf Rachid-Lyuboumir Gruitch Laboratoire SeT UTBM
Plus rapide chemin bicritère : un problème d’aménagement du territoire
La Vitesse du Son Lecture préparatoire Physq 124/130
Angles et distances dans R2
L’expérience de Young Sur une plage de Tel Aviv, (Israël), on peut très bien voir le phénomène de diffraction.
LES ÉLASTICITÉS DE LA DEMANDE ET DE L’OFFRE
12 septembre ème Il faut effectuer le calcul rouge (comme bâbord) pour celui qui est à gauche de sa table et vert (comme tribord) pour celui qui.
Algorithmes Branch & Bound
Chapitre 2: Les régularités et les relations
Mathématiques SN Les CONIQUES Réalisé par : Sébastien Lachance.
On travaillera dans le premier octant. Approximation dune droite réelle y = p x par un objet rectiligne.
Lignes trigonométriques.
Généralités sur les constructions (1)
Optimisation non linéaire sans contraintes
Les Sections Coniques.
Expression littérale  1) Définition
Algorithme de Bellman-Ford
Programmation linéaire en nombres entiers Algorithme de la subdivision successive («Branch and Bound Algorithm»)
Courbes de Bézier.
Visualisation de surfaces décrites analytiquement
OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
Unité 1: La cinématique 2. Mouvement rectiligne B. Vitesse uniforme
Géométrie analytique - coordonnées du point de partage d’un segment
Géométrie analytique Relations entre deux droites Remarque:
Systèmes semi-linéaires
PIF-6003 Sujets spéciaux en informatique I
SIF-1033 Traitement d’image
Les réseaux.
Les fentes multiples Méthode semi graphique d’addition d’ondes. La méthode trigonométrique n’est pas commode dans le cas de 3 sources ou plus, ou si les.
Chapitre 3 La cinématique à une dimension
MODULE 8 Les fonctions SINUSOÏDALES
Géométrie analytique La pente.
Géométrie analytique Distance d’un point à une droite.
Fonction partie entière
Géométrie analytique Équations d’une droite
Fonction partie entière
Géométrie analytique Distance entre deux points.
Les fonctions leurs propriétés et.
Géométrie analytique Relations entre deux droites Remarque :
Parcours d'une séquence de longueur fixe
TRAITEMENT D’IMAGE SIF-1033.
La fonction quadratique
2. Optimisation sans contrainte Fonctions à une seule variable
Préférences et fonctions d’utilité
La droite dans R3 Montage préparé par : André Ross
Géométrie analytique Distance d’un point à une droite.
Programmation linéaire en nombres entiers : les méthodes de troncature
Modélisation géométrique de base
Projet Télédétection Vidéo Surveillance Deovan Thipphavanh – Mokrani Abdeslam – Naoui Saïd Master 2 Pro SIS / 2006.
Université de Sherbrooke
Programmation linéaire en nombres entiers
La fonction quadratique
Chapitre VIII Découpage d’une scène selon une fenêtre donnée.
CHAPITRE III Calcul vectoriel
Traitement du signal (images) u Sujets –Détection des droites –Transformée de Hough (espace paramétré) *avec la pente et l’ordonnée à l’origine *avec.
Transcription de la présentation:

Génération d’un segment de droite

Génération d’un segment de droite « point par point » 8 1 2 y2 7 3 6 5 4 y1 VOISINAGE D’UN POINT x1 x2 Afficher le segment de droite (x1, y1)-(x2, y2) i.e. choisir les « pixels » les plus « proches » du segment à tracer. Objectif : Critères de choix d’un bon algorithme : simplicité efficacité Correspondance avec le segment réel

Algorithme DDA Soient (x1, y1)-(x2, y2) les extrémités du segment, x = x2 - x1 (x, y) le point courant, y = y2 - y1 (x, y) est le prochain point généré. où x = x +  x,  > 0 y = y +  y (x, y)  segment de droite (x1, y1)-(x2, y2) car (y - y) / (x - x) = y / x = pente du segment de droite ([x + 0.5], [y + 0.5]) est considéré.

Plusieurs choix du pas   = 1 / max(| x |, | y |)  x = 1 et  y =  pente ou  y = 1 et  x =  1 / pente Implantation : |y| > |x| vrai Nb_de_points_generes  |y| xinc  x / Nb_de_points_generes yinc  (signe de y) 1 faux Nb_de_points_generes  |x| yinc  y / Nb_de_points_generes xinc  (signe de x) 1 x  x1 + 0.5; y  y1 + 0.5; Répéter Nb_de_points_generes fois Afficher([x], [y]) x  x + xinc y  y + yinc

Algorithme DDA avec  = 1 / max(| x |, | y |) Une division réelle et 4 variables réelles  est-il suffisamment petit ou trop petit? Qu’arrive-t-il dans le cas d’un segment horizontal, d’un segment vertical d’un segment dont la pente est  1

Deuxième choix du pas   = 2-n, où 2n-1  max(| x |, | y |)  2n B Recherche de n : [log2 {max(| x |, | y |) }] comment procéder? Implantation : eps_dx  |x| et eps_dy  |y| nb_iterations  1 Tant et aussi longtemps que eps_dx  1ou eps_dy  1 faire décaler d’une position vers la droite eps_dx décaler d’une position vers la droite eps_dy décaler d’une position vers la gauche nb_iterations 2n points à afficher x  x1 + 0.5; y  y1 + 0.5; eps_dx = (signe de x) eps_dx; eps_dy = (signe de y) eps_dy; Répéter « nb_iterations » fois Afficher([x], [y]) x  x + eps_dx; y  y + eps_dy

Algorithme DDA avec  = 2-n, où 2n-1  max(| x |, | y |)  2n Pas de divisions réelles Présence de variables réelles 2n > max(| x |, | y |) ?????

Algorithme de Bresenham 3 4 2 5 1 6 8 7 Mouvements élémentaires à partir d’un point : 4 mouvements axiaux + 4 mouvements diagonaux 1er quadrant : x  0, y  0 Hypothèse non restrictive : une des extrémités du segment est prise comme origine. Cas simple Il s’agit de déterminer une suite de mouvements axiaux et/ou diagonaux.

Algorithme de Bresenham Soit le point courant (r, q) dans le premier octant, mouvement diagonal (r+1, q+1) s1 s2 mouvement axial Segment à afficher (r, q) (r+1, q) 2 alternatives : (r+1, q) et (r+1, q+1) Le choix se fait en comparant les longueurs s1 et s2 : si q+1-s < s-q alors effectuer un mouvement diagonal sinon effectuer un mouvement axial Note : On pose s ordonnée du point d’intersection du segment avec la verticale x = r + 1.

Choix entre un mouvement axial et un mouvement diagonal Extrémité initiale du segment : l’origine s = y (r + 1) / x q + 1 - s < s - q  q + 1 - y (r + 1) / x < y (r + 1) / x - q Puisque x > 0, 2 (- q x + r y) + 2 y - x > 0 Posons e(r, q) = 2 (- q x + r y) + 2 y - x, e(r+1, q) = e(r,q) + 2 y e(r+1, q+1) = e(r,q) + 2 (y - x) e(0,0) = 2y - x

Implantation de l’algorithme de Bresenham Soient dx, dy, x, y, e, inc_axial, inc_diagonal des variables entières, y  0 inc_axial  2 * dy; e  inc_axial - dx; inc_diagonal  e - dx; Pour x = 0 jusqu’à dx faire afficher(x, y); si e  0 alors y  y + 1 e  e + inc_diagonal sinon e  e + inc_axial FIN

Génération d’un arc de cercle

Génération d’un arc de cercle Soit C : (Cx, Cy) le centre du cercle de rayon r, l’équation du cercle est : (x - Cx)2 + (y - Cy) 2 = r 2. 1.Translation de -C : x2 + y2 = r 2. 2.Calcul des points (x, y) pour générer le cercle centré à l’origine. 3.Translation de C. A. dy2 = - 2x = 2 y dy dx dx dy = -x dx y x2 + y2 = r 2 (xn+1, yn+1) yn+1 - yn  - xn xn+1 - xn yn  yn+1 - yn = -  xn xn+1 - xn =  yn dy dx (xn, yn) où  = 2-n, 2n-1  r < 2n (xn, yn) On obtient une spirale car x2n+1 + y2n+1 = (1 + 2) r2 si (xn, yn) cercle. Note :

Génération d’un arc de cercle Solution à ce problème : Si  est petit, aucun problème.  xn+1 - xn =  yn yn+1 - yn = -  xn+1 Alternative : On a : x2n+1 + y2n+1  [(1 - 2 + 4) r2, (1 + 2) r2] si (xn, yn)  cercle. Approche exacte B. xn+1 xn xn cos  - yn sin  = R = yn+1 yn yn cos  + xn sin  où x2n+1 + y2n+1 = r2 Approximation d ’un cercle par un polygone à N côtés C. (xi , yi) :(r cos 2 i/ N, r sin 2 i / N),i= 1, 2, …, N sont les sommets du polygone.

Génération d’un arc de cercle Adaptation de l’algorithme de Bresenham D. On doit profiter au maximum des propriétés de symétrie d’un cercle. On considère un octant seulement, celui allant de (0, R) à (R / 2, R / 2). Les autres octants sont générés par simple symétrie. Le point de départ est donc (0, R).  x = 1, 2, … R / 2 (jusqu’à ce que x = y) soit (u,v) le dernier point généré, deux candidats sont possibles : (u+1,v) et (u+1,v-1), soit y l’ordonnée du point appartenant au cercle dont l’abscisse est u+1, alors y2 = R2 – (u+1)2. v d1 y d2 v-1 On obtient  : d1 = v2 – y2 = v2 – R2 + (u+1)2 d2 = y2 – (v-1)2 = R2 – (u+1)2 - (v-1)2 u+1

Génération d’un arc de cercle Posons p(u, v) = d1 – d2 = 2 (u+1) 2 + v2 – 2R2 + (v-1)2. Si p(u, v) < 0 alors choisir (u + 1, v) sinon choisir (u + 1, v – 1). De plus, on obtient : Mouvement axial : p(u+1, v) = p(u, v) + 4u + 6 Mouvement diagonal : p(u+1, v-1) = p(u, v) + 4(u - v) + 10.

Élimination de l’effet d’escalier

Élimination de l’effet d’escalier Les algorithmes de génération de points forment des paliers horizontaux ou verticaux. Problème : Pour éliminer ces effets, plusieurs solutions sont possibles : Faire varier l’intensité lumineuse du point selon sa distance au point théorique. 1. Techniques de simulation de grisée : 2. Ex. : un pixel  une matrice 3 x 3 etc.

D’autres solutions un point à l’écran (pixel)  rectangle 3. 4. 5. Chaque segment aura donc une largeur de trait, fonction de la dimension du rectangle. On fixe l’intensité d’une position à l’écran à partir de l’aire de la partie du rectangle recouverte par cette position. On fixe l’intensité globale en fonction de la pente. 4. Utilisation d’un mode de résolution élevée 5.

Variante de l’algorithme de Bresenham 6. Stratégie : à chaque étape, choisir un point principal le plus proche du trait théorique et un point secondaire (l’autre point). Soit le point courant (r, q) dans le premier octant, mouvement diagonal (r+1, q+1) s1 s2 mouvement axial Segment à afficher (r, q) (r+1, q) 2 alternatives : (r+1, q) et (r+1, q+1) Le choix se fait toujours en comparant les longueurs s1 et s2 :(on pose s  s2) si q+1-s < s-q alors effectuer un mouvement diagonal (intensité maximale) effectuer un mouvement axial (intensité plus faible) sinon effectuer un mouvement axial (intensité maximale) effectuer un mouvement diagonal(intensité plus faible)