• Aucun résultat trouvé

Maintien d’une vue dans une sc`ene mouvante

4.2 Maintien dynamique du complexe de visibilit´e

4.2.3 Maintien d’une vue dans une sc`ene mouvante

Nous cherchons maintenant `a maintenir la vue autour d’un point mobile dans une sc`ene o`u les objets sont aussi sujets `a modifications. Si nous voulions r´eutiliser les algorithmes de maintien de vue dynamique du chapitre pr´ec´edent, il faudrait remettre `

a jour les structures de donn´ees utilis´ees lors de ce maintien (enveloppes convexes par exemple) `a chaque changement de topologie dans le complexe.

Il est plus simple d’inclure les changements de visibilit´e du point de vue avec les changements de visibilit´e entre objets de la sc`ene. Nous avons vu que le calcul d’une vue consistait `a calculer les arˆetes du complexe de visibilit´e coup´ee par la courbe duale du point de vue, et que la vue changeait quand le courbe duale passait par l’un des sommets des arˆetes coup´ees. Nous calculons donc pour chaque arˆete de la coupe les dates t o`u le point de vue p(t) sera align´e avec les points correspondant `a chaque sommet de l’arˆete. Ces dates sont rajout´ees dans la queue de priorit´e avec les dates de changement ´el´ementaires de visibilit´e.

La mise `a jour lors d’un changement dans la vue du point p(t) s’effectue comme d´ecrit dans la section pr´ec´edente. Nous devons juste ensuite calculer les dates de passage avec les nouvelles arˆetes coup´ees par p(t). La mise `a jour et le calcul des nouvelles dates se fait en temps constant. L’insertion des nouvelles dates dans la queue de priorit´e se fait en temps logarithmique.

Lors d’un changement ´el´ementaire de visibilit´e, en plus de la mise `a jour du com-plexe, il faut v´erifier si les arˆetes modifi´ees ne font pas partie des arˆetes coup´ees par le point de vue. Le cas ´ech´eant, il faut recalculer les dates de franchissement de ces arˆetes. V´erifier si une arˆete est dans la coupe du point de vue peut se faire en temps constant en maintenant un tableau de taille n index´e par les points de la sc`ene dont chaque case contient un pointeur sur l’arˆete de la coupe associ´ee au point indice (le pointeur est NULL s’il n’y a pas d’arˆete associ´ee dans la coupe). Ce surplus de mise `a jour se fait aussi en temps constant, et la mise `a jour de la queue de priorit´e en temps logarithmique.

Le maintien d’une vue dans une sc`ene dynamique se fait en temps O(log n) `a chaque changement ´el´ementaire de visibilit´e dans la sc`ene ou `a chaque changement ´el´ementaire dans la vue.

Si maintenant nous voulons maintenir la vue autour de np points, en ne tenant pas compte de la visibilit´e entre ces points de vue, alors avec un espace m´emoire

suppl´ementaire en O(npn), nous pouvons maintenir les visibilit´es en temps O(log(n + nnp)) `a chaque changement.

Chapitre 5

D´eg´en´erescences et impr´ecisions des

calculs num´eriques

Dans ce chapitre nous montrons comment traiter les cas d´eg´en´er´es dans les divers calculs de visibilit´e ´etudi´es dans les chapitres pr´ec´edents, grˆace `a l’id´ee de simulation de simplicit´e guid´ee par la visibilit´e. Nous ´etudions ensuite les probl`emes pos´es par les impr´ecisions de calculs num´eriques et proposons plusieurs solutions pour y rem´edier.

— C’est une machine qui joue au bilboquet sans ja-mais rater son coup. [...] La force et l’ampleur de son mouvement sont calcul´ees en fonction du poids exact de la boule, dont la trajectoire est instantan´ement d´ecid´ee avec une pr´ecision...Hou l`a`a ! Au micropoil ! [...]

— Fou ! Il est fou ! — [...]

— Clic ! Djiiiiiii ! KRAK ! Tchink !

— Lorsque la brave machine, dans un ´eclair de lucidit´e, a compris combien elle ´etait moche et mal fichue, elle d´ecida, courageusement, de se supprimer ...

5.1 Traitement des d´eg´en´erescences

Nous avons suppos´e dans les chapitres pr´ec´edents que les points de la sc`ene (som-mets des polygones ou points de vue) n’´etaient jamais align´es. L’hypoth`ese nous supposons que les objets sont en position g´en´erale est couramment rencontr´ee dans l’´etude th´eorique d’un probl`eme g´eom´etrique. Cette hypoth`ese permet d’´eliminer les cas d´eg´en´er´es qui pourraient se pr´esenter (points align´es, points cocycliques, droites concourantes ...). En effet, des arguments de perturbation montrent qu’en g´en´eral la complexit´e th´eorique des structures de donn´ees et des algorithmes relatifs au probl`eme ´etudi´e est maximale pour les configurations g´en´erales (c’est-`a-dire les sc`enes o`u les ob-jets sont en position g´en´erale). De plus, si la complexit´e th´eorique n’est pas modifi´ee par la pr´esence de sc`enes d´eg´en´er´ees, il n’en est pas de mˆeme pour la complexit´e pra-tique : il faut alors consid´erer un nombre parfois important de situations particuli`eres propres aux situations d´eg´en´er´ees.

Cette abondance de cas particuliers n’apporte en g´en´eral rien `a l’´etude th´eorique du probl`eme g´eom´etrique abord´e et d´etailler tous les cas particuliers aurait plutˆot tendance `a rallonger et obscurcir l’expos´e. Le traitement de ces cas est donc laiss´e de cˆot´e. Cependant les cas d´eg´en´er´es sont souvent la r`egle en pratique, et les programmes qui ne les prennent pas en compte terminent souvent de fa¸con brutale et pr´ematur´ee leur ex´ecution lorsqu’ils traitent des exemples concrets (figure 5.1).

FIG. 5.1 – R´esultat d’un programme traitant une sc`ene d´eg´en´er´ee.

Dans cette section nous ´etudions la nature des probl`emes pos´es par les d´eg´en´eres-cences. Nous ´etudions ensuite la possibilit´e d’appliquer un sch´ema de perturbation symbolique pour traiter ces probl`emes. Nous montrons enfin comment am´eliorer ces sch´emas pour traiter les probl`emes li´es `a la visibilit´e dans le plan.