Arrangements
Pr´ edicats et constructions
Monique Teillaud
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions
Balayage de segments
Bentley-Ottmann et robustesse
Connu pendant longtemps comme un algorithme
• tr`es instable en pratique,
• d’int´erˆet purement th´eorique, historique.
Impr´ecision des calculs −→ ´echec.
Utiliser des pr´edicats exacts, si possible pas de constructions.
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 2
Variantes
S ensemble de n segments dans le plan R2.
• Pb1. Calculer les paires de segments de S qui se coupent.
• Pb2. Calculer l’arrangement A de S.
• Pb3. Calculer la carte des trap`ezes T de S.
Cellules de taille constante.
k = nb de points d’intersection : ≤ nb de paires qui se coupent.
nb d’arˆetes de A : ≤ n + 2k.
nb de murs de T : ≤ 2(n + k).
Tailles de A et T : O(n + k).
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 4
Probl`emes et pr´edicats
Pb1. Θ(n2) tests d’intersection
[p0p1] ∩ [p2p3] 6= ∅ Pb2. Description de A utilise
[p0p1] ∩ [p2p3] <x [p0p1] ∩ [p4p5]
Pb3. Description de T utilise
[p0p1] ∩ [p2p3] <x [p4p5] ∩ [p6p7]
Pr´ edicats et degr´ es
Pr´edicats utilis´es par B-O.
Pr´edicat1 : p0 <x p1
Pr´edicat2 : p0 <y (p1p2)
Pr´edicat2’: [p0p1] ∩ [p2p3] 6= ∅ Pr´edicat3 : p0 <x [p1p2] ∩ [p3p4]
Pr´edicat4 : [p0p1] ∩ [p2p3] <x [p0p1] ∩ [p4p5] Pr´edicat5 : [p0p1] ∩ [p2p3] <x [p4p5] ∩ [p6p7]
Les pr´edicats i, i0 sont des signes d’expressions polynomiales de degr´e i en les coordonn´ees des points pj.
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 6
Pr´edicat1 : p0 <x p1
x0 < x1
degr´e 1
Pr´edicat2 : p0 <y (p1p2)
Test d’orientation.
orient(p0p1p2) =
x0 x1 x2 y0 y1 y2
1 1 1
=
x1 − x0 x2 − x0 y1 − y0 y2 − y0
degr´e 2
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 8
Pr´edicat2’: [p0p1] ∩ [p2p3] 6= ∅
Si p0 <x p2 if p3 <x p1
if orient(p0p1p2) × orient(p0p1p3) < 0 then return true
else return false else
if orient(p0p1p2) × orient(p2p3p1) > 0 then return true
else return false
sinon on ´echange [p0p1] et [p2p3].
Pr´edicat2’ 7→ Pr´edicat2.
degr´e 2
I = [pipj] ∩ [pkpl]
I = pi + (pj − pi)NI DI
o`u
NI = orient(pipkpl) DI =
xj − xi xk − xl yj − yi yk − yl
= orient(pipjpk) − orient(pipjpl)
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 10
Pr´edicat3 : p0 <x [p1p2] ∩ [p3p4]
Pr´edicat4 : [p0p1] ∩ [p2p3] <x [p0p1] ∩ [p4p5]
Pr´edicat5 : [p0p1] ∩ [p2p3] <x [p4p5] ∩ [p6p7]
Formules explicites donn´ees par les coordonn´ees des points d’intersection.
(Reste un peu de travail pour montrer que le degr´e est le bon...)
Bentley-Ottmann est de degr´e 5.
Optimal en degr´e pour calculer la carte des trap`ezes T .
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 12
Compromis : complexit´ e combinatoire/alg´ ebrique
Pb1.
Calculer les paires de segments de S qui se coupent.
Algorithme naif en Θ(n2)
• optimal en degr´e,
• optimal en complexit´e dans le cas le pire.
Borne inf´erieure Ω(nlogn + k).
Il existe des algorithmes optimaux, et en degr´e 3.
Un balayage en degr´e 3 pour Pb1.
Entre deux extr´emit´es,
l’ordre entre points d’intersection est indiff´erent.
Pr´edicat3 : p0 <x [p1p2] ∩ [p3p4] doit ˆetre exact, pas les pr´edicats de plus haut degr´e.
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 14
Compromis : complexit´ e combinatoire/alg´ ebrique
Pb2.
Calculer l’arrangement A.
Algorithme simple :
• R´esoudre Pb1
• Trier les points d’intersection sur chaque segment.
O((n + k) log n), degr´e 4.
Borne inf´erieure Ω(nlogn + k).
Un balayage en degr´e 4 pour Pb2 ?
Intuition :
Entre deux intersections sur un mˆeme segment,
la pr´esence de points d’intersection d’autres segments est indiff´erente.
Pr´edicat4 : [p0p1] ∩ [p2p3] <x [p0p1] ∩ [p4p5] doit ˆetre exact, pas les pr´edicats de plus haut degr´e.
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 16
Les courbes
Des petits pas
G´eom´etrie algorithmique pour les courbes et les surfaces : travaux r´ecents.
Projet europ´een ECG, 2001-2004 Effective Computational Geometry for Curves and Surfaces
Progr`es incr´ementaux : arcs de cercles, arcs de coniques, . . .
• G´en´eraliser les algorithmes,
deux courbes se coupent plus d’une fois
• Etude des pr´´ edicats/constructions encore plus cruciale, aspects alg´ebriques
• Programmation...
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 18
Arcs de cercles
Id´ee de base :
garder les donn´ees initiales pour faire les calculs, ´eviter de “cascader”.
Cercle : centre (α, β), carr´e du rayon r
C(x, y) = (x − α)2 + (y − β)2 − r = 0
α, β de degr´e 1, r de degr´e 2.
Repr´esentation des arcs
Une mˆeme repr´esentation pour les arcs en entr´ee et en sortie.
Observation : C ∩ C0 = C ∩ L,
L = axe radical de C et C0. L(x, y) = C(x, y) − C0(x, y) L(x, y) = px + qy + s
Degr´e des coefficients de L = degr´e des coefficients donn´es en entr´ee : p, q degr´e 1, s degr´e 2.
Extr´emit´e ou point d’intersection : mˆeme repr´esentation (cercle,droite).
Coordonn´ees = nombres alg´ebriques de degr´e 2.
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 20
Comparaison de nombres alg´ebriques
Pr´edicat5 : [p0p1] ∩ [p2p3] <x [p4p5] ∩ [p6p7]
Cas des segments : signes d’expressions polynomiales en les donn´ees.
degr´e = degr´e des expressions polynomiales dont on ´evalue le signe.
Cas des courbes : comparaison de nombres alg´ebriques.
degr´e = degr´e des polynˆomes dont on compare les racines.
M´ethode naive : Calculer les racines, comparer.
• racines carr´ees...
• comparaison exacte, arithm´etique coˆuteuse (leda::real, core)
Deux m´ ethodes alg´ ebriques
Notations :
x
i= L
i∩ C
i∈ {l
i, r
i}
l
1r
1l
2r
2Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 22
A base de r´` esultants
l
2l
1t
A
2A
t2A
1signe de t ?
t tq
C1(x + t, y) = 0 L1(x + t, y) = 0 C2(x, z) = 0 L2(x, z) = 0
a une solution x, y, z
• 1er ingr´edient alg´ebrique : r´esultant.
R´esultant
P(t) = P0t4 + P1t3 + P2t2 + P3t + P4
Pi polynˆomes en les donne´es αj, βj, rj, pj, qj, sj degr´es 8 `a 12
659 monˆomes...
signe d’une racine t ? Simplifications n´ecessaires...
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 24
Remarque
(mais connaitre la configuration pr´ecise n’est pas toujours n´ecessaire)
• 2`eme ingr´edient alg´ebrique : r`egle de Descartes
nombre de racines positives
=
nombre de changements de signes dans la suite P0, . . . , P4 De nouveau, des signes d’expressions polynomiales !
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 26
A base de suites de Sturm`
P0, P1 ∈ R[x]
Suite de Sturm = suite P0, P1, . . . , Pn ∈ R[x], n ≥ 1 tq
aiPi−1 = QPi + biPi+1, i = 1, . . . , n − 1,
pour Q ∈ R[x], ai, bi ∈ R, et aibi < 0.
Th´eor`eme de Tarski Hypoth`eses :
• f0, f1 ∈ R[x] premiers entre eux
• f0 sans facteurs carr´es,
• p < q ne sont pas des racines de f0.
Alors pour toute suite de Sturm P = (f0, f00f1, . . .)
VP(p) − VP(q) = X
f0(ρ)=0, p<ρ<q
sign(f1(ρ)),
o`u VP(p) : nb de variations de signes dans l’´evaluation de la suite de Sturm en p.
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 28
p < q non racines de f ∈ R[x],
nombre de racines distinctes r´eelles de f dans [p, q] :
Vf,f0(p) − Vf,f0(q).
(prendre f0 = f, f1 = 1 dans le th de Tarski) Th´eor`eme de Schwartz et Sharir
f0, f1 ∈ R[x] sans facteurs carr´es, p < q non racines de f0,
Vf0,f1(p) − Vf0,f1(q) = X
f0(ρ)=0, p<ρ<q
sign(f00(ρ)f1(ρ)).
Il suffit de calculer
S(P) = sign(f2(x2)), S(P) = sign(f2(x1)) S(P) = sign(f20(x2)), S(P) = sign(f20(x1))
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 30
R´esultats des deux m´ethodes
Donnent (`a peu de choses pr`es) les mˆemes signes d’expressions polynomiales pour la comparaison des nombres alg´ebriques.
Arcs de coniques
Conique donn´ee par un polynˆome de degr´e 2 en x, y.
Arc de conique ?
Pas d’axe radical pour deux coniques, mˆeme pas de droite rationnelle passant par C ∩ C0. . .
Extr´emit´e ou point d’intersection : (conique,conique).
Coordonn´ees = nombres alg´ebriques de degr´e 4.
Comparaison : suites de Sturm plus faciles `a g´en´eraliser que r´esultants.
Petits degr´es : suites de Sturm statiques.
Grands degr´es : calcul dynamique.
Dijon - octobre 2005 Arrangements - Pr´edicats et constructions 32