• Aucun résultat trouvé

La repr´esentation des domaines par des polygones permet ´egalement pour la contrainte distn var, de propager plus fortement des variables de distance minimale et maximale. Nous donnons ici les principes de l’algorithme de filtrage, puis nous d´etaillons notre approche pour calculer les sommes de Minkowski intervenant dans la proc´edure.

En imposant la contrainte distn var ([P1, . . . , Pn] , dvar) on peut d´ej`a appliquer aux variables

de position le filtrage de la contrainte suivante :

distn([P1, . . . , Pn] , d , D), (2.9)

o`u ∀(i, j) (

Di,j = dvari,j

di,j = dvari,j

(2.10) Le filtrage peut alors en retour ˆetre ´etendu aux variables de distance : une fois la propagation pr´ec´edente achev´ee, il est en effet possible de mettre `a jour les bornes d´etermin´ees par les domaines polygonaux. Nous l’illustrons sur la Figure 2.16, o`u il est remarquable que la distance entre tout couple de points solutions est major´ee (resp. minor´ee) par la distance maximale (resp. minimale) entre tout couple de points pris dans les polygones. Une double fl`eche en pointill´es (resp en trait plein) indique la valeur distance maximale (resp. minimale) entre Pi et Pj.

Pi

Pj

dist(Pi, Pj)

dist(Pi, Pj)

Figure 2.16 – Distance minimale et maximale entre deux polygones

L’algorithme na¨ıf pour calculer les bornes sur les variables de distances est quadratique. Nous proposons ici un algorithme enO(n log(n)).

Les bornes obtenues par le filtrages de M inDistanceP rune peuvent en effet ˆetre obtenu en calculant la diff´erence de Minkowski de tous les couples de polygones. Pour deux polygones convexes Pi et Pj, la diff´erence de Minkowski de ces polygones que nous notons Pi Pj est aussi

un polygone convexe. Nous donnons un exemple de cette construction sur la Figure 2.17. Or les points de Pi Pj sont l’ensemble des couples de la forme :

n

(pxi − pxj, pyi − pyj) : pi ∈ Pi, pj ∈ Pj

o ,

si bien qu’en consid´erant l’ensemble des normes de cet ensemble de vecteurs, on obtient l’ensemble nq (px i − pxj)2+ (p y i − p y j)2 : pi ∈ Pi, pj ∈ Pj o ,

i.e. l’ensemble des valeurs possibles de la distance entre deux points dans Pi et Pj.

Pour calculer le minimum de cet ensemble, si l’origine n’est pas comprise dans le polygone Pi Pj, il suffit de calculer le minimum de la distance qu’il y a d’une arˆete de ce polygone `a

l’origine. Sinon, il existe deux points identiques pi∈ Pi et pj ∈ Pj (les polygones s’intersectent)

et le minimum est z´ero. Pr´ecisons de plus que la somme de Minkowski construite est une ap- proximation ext´erieure ; la distance minimale (resp. maximale) de l’origine `a ce polygone est

Pi (0, 0) −Pj dist(Pi, Pj) dist(Pi, Pj) Pi Pj

Figure 2.17 – Utilisation de la diff´erence de Minkowski pour le calcul de la distance minimale entre deux polygones Pi et Pj.

pour cette raison aussi une borne inf´erieure (resp. sup´erieure) `a la distance entre les polygones, si bien que la transformation pr´eserve la correction des calculs.

On remarquera pour finir que les calculs n´ecessaires pour estimer dvari,j ont en fait d´ej`a

´et´e effectu´es dans l’Algorithme 9. Lors de l’´etape initiale d’´etiquetage des polygones, il suffit d’ajouter au test d’´ecart une comparaison qui extrait la distance maximale entre les polygones. Terminons en indiquant notre approche pour le calcul de la somme de Minkowski. Nous nous basons sur l’algorithme enO(m+n) pour des polygones `a m et n cˆot´es donn´e dans [38] que nous d´etaillons sur l’Algorithme 11. Il est fond´e sur l’observation que tout point extrˆeme dans une direction −→d appartenant `a la somme de Minkowski de deux objets convexes dans le plan, est la somme de deux points extrˆemes dans chacun des objets selon cette mˆeme direction. L’algorithme construit la somme en parcourant simultan´ement la liste des cˆot´es (orient´es) des deux polygones. La comparaison de l’angle form´e par chacun des vecteurs avec l’axe positif permet de d´eterminer quels points il faut choisir dans la somme pour n’obtenir que des points extrˆemes.

Algorithme 11 : Somme de Minkowski

Entr´ees : Deux polygones convexes P ={p1, . . . , pn} et Q = {q1, . . . , qm} donn´es dans

l’ordre trigonom´etrique, avec p1 et q1 les sommets de plus petite ordonn´ee et

de plus petite abscisse. Sorties : P⊕ Q

i := 1, j := 1

pn+1:= p1, qm+1= q1

r´ep´eter

ajouter pi+ qj `a P ⊕ Q

si angle(pi, pi+1) < angle(qj, qj+1) alors i := i + 1

sinon si angle(pi, pi+1) > angle(qj, qj+1) alors j := j + 1

sinon i := i + 1, j := j + 1 jusqu’`a i = n + 1 et j = m + 1

Pour rendre cet algorithme efficace nous combininons le calcul sur les rationnels avec l’arith- m´etique d’intervalles. Nous devons consid´erer deux sources ´eventuelles d’erreur avec des calculs flottants : le calcul du pr´edicat g´eom´etrique comparant l’angle `a l’axe positif entre deux vecteurs et la construction des sommes de points.

Le calcul du pr´edicat ne fait intervenir que des comparaisons de signes et des diff´erences et produits de vecteurs. Ces op´erations sont ais´ement remplac´ees par des calculs sur des intervalles et lorsque l’arithm´etique d’intervalles occasionne une surestimation, qui ne permet plus de d´eci- der du r´esultat du test, les mˆemes calculs sont simplement repris en utilisant une arithm´etique rationnelle.

Pour les op´erations de sommation de points, afin de garantir la correction de l’algorithme de filtrage, on doit s’assurer que le polygone construit contient le polygone obtenu avec des calculs exacts. Nous effectuons pour cela les sommes avec l’arithm´etique d’intervalles – nous pourrons de la sorte obtenir jusqu’`a quatre points encadrant le point de sommation exacte – et terminons en retournant l’enveloppe convexe de tous les points calcul´es en lieu d’approximation ext´erieure du polygone ´egal `a la somme exacte de Minkowski. Le calcul d’enveloppe convexe se fait au pire en O(n log(n)).