[0001] La présente invention se rapporte au domaine de l'affichage numérique d'objets paramétrés.
[0002] L'invention est plus particulièrement adaptée aux applications embarquées, par exemple
de cartographie numérique, sur des terminaux mobiles, par exemple des téléphones portables,
assistant personnel numérique ou PDA etc. De telles applications sont par exemple
mises en oeuvre dans des terminaux mobiles aptes à communiquer avec un serveur.
[0003] Il est connu d'afficher des objets tridimensionnels, ces objets indicés i représentant
par exemple une pluralité d'immeubles respectifs. Ces objets tridimensionnels sont
paramétrés par une liste de données d'images. Chaque objet au format boite (indicé
i) est considéré comme un cylindre de hauteur z
i et de base un polygone. Pour chacun de ces objets, la liste comporte une valeur de
paramètre de hauteur z
i, ainsi que les coordonnées 2D des points de la base polygonale x
ij, y
ij, j indiçant les points de la base. La liste de données d'image peut en outre comprendre
des coordonnées paramétrant d'autres objets, selon un autre format (format objet),
des paramètres de vecteurs normaux
ni à des surfaces des objets à représenter, des textures t
i, des couleurs c
i, ou autre.
[0004] Des paramètres de navigation définissant le point de vue selon lequel un utilisateur
souhaite voir afficher les objets, sont déterminés à partir de données reçues d'une
interface utilisateur.
[0005] A partir de la liste des données d'image et des paramètres de navigation souhaités,
une représentation 3D est calculée, par exemple par un moteur graphique ou moteur
3D.
[0006] L'affichage sur un écran des valeurs de pixels calculées permet ainsi de représenter
en deux dimensions les objets tridimensionnels selon les paramètres de navigation
souhaités.
[0007] Les objets à représenter peuvent alternativement être des objets bidimensionnels,
paramétrés par des données bidimensionnelles. Les paramètres de navigation peuvent
alors définir une position et une échelle par exemple et les calculs permettent d'obtenir
une représentation 2D.
[0008] Ces calculs sont bien connus de l'homme du métier. La plupart des terminaux comprennent
des moyens de calcul du type moteur graphique capables d'effectuer ces calculs.
[0009] L'invention a pour objectif d'accélérer le temps de calcul de la représentation.
[0010] Il est proposé un procédé de traitement, en vue d'un affichage sur un écran d'un
terminal d'une image numérique représentant au moins une partie d'un ensemble d'objets
d'un point de vue défini par des paramètres de navigation, cet ensemble d'objets étant
paramétré par une liste de données d'image comprenant, pour au moins un objet dudit
ensemble, des coordonnées de points d'un polygone dans un plan,
dans lequel
ce plan est partitionné en zones,
chaque polygone appartenant à une pluralité de zones est stocké dans une mémoire sous
la forme d'une pluralité de polygones découpés, chaque polygone découpé appartenant
à une seule zone, de sorte que chaque polygone stocké dans cette mémoire est associé
à une seule zone,
ce procédé comprenant :
déterminer en fonction des paramètres de navigation un jeu de zones de cette partition
dudit plan,
pour chaque zone dudit jeu de zones, choisir les coordonnées des points des polygones
stockés dans la mémoire et associés à cette zone pour le calcul d'une représentation,
destinée à être affichée sur l'écran, de l'ensemble d'objets selon les paramètres
de navigation.
[0011] Ainsi, on dispose de coordonnées de points classées par zones, de sorte que le calcul
de la représentation à afficher peut être effectué à partir seulement de points correspondant
à certaines zones. Les points appartenant à des zones dont on sait qu'elles ne seront
pas affichées sont filtrés avant le calcul de la représentation.
[0012] On peut ainsi éviter d'effectuer des calculs fastidieux, ce qui peut être particulièrement
intéressant lorsque ces calculs sont effectués par un terminal relativement pauvre
en ressources mémoire et/ou de calcul.
[0013] On peut prévoir plusieurs niveaux de résolution, chaque niveau de résolution correspondant
à un ensemble de zones constituant une partition du plan et à un ensemble de polygones
stockés, chaque polygone stocké dudit ensemble appartenant à une seule zone dudit
ensemble de zones. Alternativement, une seule partition est prévue.
[0014] Avantageusement, la liste de données d'image comprend, pour au moins une zone, un
jeu d'au moins une texture associé à cette zone. Ainsi, des données de texture sont
également classées par zone, ce qui permet d'éviter d'avoir à télécharger toutes les
données de textures et d'effectuer les calculs de représentation à partir de toutes
les données de texture. On élimine les textures dont on sait qu'elles correspondent
à des informations qui ne seront pas affichées à l'écran.
[0015] En effet, les données de texture peuvent être relativement volumineuses, par exemple
les données de texture peuvent comprendre une seule image de taille en octets élevée,
ce qui peut être préoccupant dans le cas d'un terminal relativement pauvre en ressources
mémoire et/ou de calcul. En conservant seulement les données de texture pertinentes
pour l'affichage souhaité, on peut gagner du temps de calcul.
[0016] Il est connu de l'inventeur de stocker pour chaque objet, un jeu de textures associé
à cet objet. Le stockage par zone présente l'avantage de réduire le nombre de lectures
en mémoire et de limiter le nombre de textures lors des calculs (la plupart des moteurs
graphiques sont limités à un nombre de textures prédéfini), ainsi que le volume des
données de texture chargées. En effet, lorsqu'une texture par bâtiment est chargée,
si l'utilisateur souhaite voir afficher une ville entière, un grand nombre de lectures
mémoire sera effectué, le moteur graphique risque d'être saturé en nombre de textures,
le volume de données chargées risque d'être élevé, les données de texture chargées
auront une résolution trop élevée par rapport à l'affichage possible.
[0017] Pour chaque zone, les données de texture peuvent comprendre une image de relativement
faible taille en octets, ou bien plusieurs de ces images. Le nombre d'images par zone
peut avantageusement être le même quelque soit la zone, de sorte que le volume (en
octets) attendu des données reste constant d'une zone à l'autre.
[0018] Une image utilisée comme données de texture peut être obtenue par exemple en photographiant
une région géographique réelle.
[0019] Les objets à représenter peuvent être bidimensionnels ou tridimensionnels.
[0020] De manière générale, ce procédé permet de répartir des données d'image par zone,
de sorte que, pour un affichage souhaité selon un point de vue donné, on peut ne conserver
pour le calcul d'une représentation que les données d'image dont on sait qu'elles
correspondent à une information qui sera affichée à l'écran.
[0021] Selon un autre aspect, il est proposé un dispositif de traitement, en vue d'un affichage
sur un écran d'un terminal d'une image numérique représentant au moins une partie
d'un ensemble d'objets d'un point de vue défini par des paramètres de navigation,
cet ensemble d'objet étant paramétré par une liste de données d'image comprenant,
pour au moins un objet dudit ensemble, des coordonnées de points d'un polygone dans
un plan, ce plan étant partitionné en un ensemble de zones, le dispositif comprenant
[0022] une mémoire structurée par zones, chaque polygone appartenant à une pluralité de
zones étant stocké dans cette mémoire sous la forme d'une pluralité de polygones découpés,
chaque polygone découpé appartenant à une seule zone, de sorte que chaque polygone
stocké dans cette mémoire est associé à une seule zone,
des moyens de traitement pour déterminer un jeu d'au moins une zone dudit plan correspondant
aux paramètres de navigation,
des moyens de sélection agencés pour choisir, pour chaque zone du jeu de zones, les
coordonnées des points des polygones stockés dans la mémoire et associés à cette zone,
pour le calcul d'une représentation, destinée à être affichée sur l'écran, de l'ensemble
d'objets selon ces paramètres de navigation.
[0023] Ce dispositif peut être intégré dans un serveur. Ce dispositif peut être partie intégré
dans un serveur, et en partie intégré dans un terminal. Ce dispositif peut être intégré
dans un terminal. Dans ce dernier cas, la mémoire peut être intégrée dans une carte
mémoire du terminal, voire dans un support mémoire amovible de type clé USB.
[0024] La mémoire structurée par zones peut être une partie d'une unité de mémoire.
[0025] Selon encore un autre aspect, l'invention a pour objet un procédé, mis en oeuvre
par des moyens informatiques, de pré-traitement d'une liste de données d'images paramétrant
un ensemble d'objets, en vue d'un affichage sur un écran d'un terminal d'une image
numérique représentant au moins une partie dudit ensemble d'objets, cette liste de
données d'image comprenant, pour au moins un objet dudit ensemble, des coordonnées
de points d'un polygone dans un plan, ce plan étant partitionné en un ensemble de
zones. Pour au moins un polygone de la liste de données d'images :
- on teste si ce polygone appartient à une pluralité de zones,
- si le test montre que le polygone appartient à une pluralité de zones, on détermine,
à partir des coordonnées des points dudit polygone, des coordonnées de points d'un
polygone découpé, chaque polygone découpé appartenant à une seule zone associée, et
on stocke ces polygones découpés dans une mémoire structurée par zones,
- si le test montre que le polygone appartient à une seule zone, on stocke ce polygone
dans cette mémoire,
de sorte que chaque polygone stocké dans cette mémoire appartient à une seule zone
associée.
[0026] Par « un » polygone découpé, on entend bien entendu un ou plusieurs. Par exemple,
on peut prévoir de scinder le polygone en autant de polygones découpés qu'il y a de
zones dans la pluralité de zones. Par exemple, ce procédé est susceptible d'être appliqué
zone par zone, de sorte que pour chaque zone, on peut découper un polygone de façon
à ne conserver que la partie circonscrite dans cette zone.
[0027] En scindant les polygones appartenant à plusieurs zones, on peut obtenir des coordonnées
de points de listes classées par zone, chaque liste correspondant à un polygone circonscrit
dans une zone. Ces coordonnées ainsi classées sont susceptibles d'être utilisées pour
les étapes du procédé décrit ci-dessus.
[0028] Le procédé de prétraitement peut être effectué dans un serveur par exemple, et les
résultats obtenus conservés dans ce serveur en vue de téléchargement depuis des terminaux.
[0029] Avantageusement, pour déterminer des coordonnées de points d'un polygone découpé
à partir de coordonnées de points d'un polygone appartenant à une pluralité de zones,
pour une zone de ladite pluralité :
- on détermine les points d'intersections de segments du polygone avec les frontières
de ladite zone,
- on insère ces points d'intersection dans une liste de points ordonnée correspondant
au polygone, entre les points extrémités des segments intersectés correspondants,
- on supprime de ladite liste les points n'appartenant pas à ladite zone.
[0030] Avantageusement et de façon non limitative, on peut en outre prévoir de :
- rechercher si des points de la liste appartiennent à un segment défini par d'autres
points de la liste, et le cas échéant on insère ces points dans la liste, entre ces
autres points,
- rechercher les points apparaissant en double dans la liste, et entre lesquels il n'y
a pas d'autre point apparaissant en double, et le cas échéant on définit une liste
des points entre les deux occurrences desdits points apparaissant en double, et une
liste comprenant les autres points restants.
[0031] L'invention n'est en rien limitée par ce procédé de découpage.
[0032] Selon encore un autre aspect, il est proposé un dispositif de prétraitement d'une
liste de données d'images paramétrant un ensemble d'objets, en vue d'un affichage
sur un écran d'un terminal d'une image numérique représentant au moins une partie
dudit ensemble d'objets, cette liste de données d'image comprenant, pour au moins
un objet dudit ensemble, des coordonnées de points d'un polygone dans un plan, ce
plan étant partitionné en un ensemble de zones. Ce dispositif comprend une mémoire
structurée par zones, et des moyens de traitement agencés pour effectuer les étapes
du procédé décrit ci-dessus, pour au moins un polygone de la liste de données d'images.
[0033] Selon encore un autre aspect, il est proposé une mémoire de stockage d'une liste
de données d'images paramétrant un ensemble d'objets, pour l'affichage sur un écran
d'un terminal d'une image numérique représentant au moins une partie dudit ensemble
d'objets. La liste de données d'image comprend, pour au moins un objet dudit ensemble,
des coordonnées de points d'un polygone dans un plan, et la mémoire est structurée
par zones dudit plan. Chaque polygone appartenant à une pluralité de zones est stocké
sous la forme d'une pluralité de polygones découpés, chaque polygone découpé appartenant
à une seule zone, de sorte que chaque polygone stocké dans la mémoire appartient à
une seule zone associée.
[0034] Avantageusement, la mémoire étant agencée de façon à stocker en outre, pour au moins
une zone, un jeu d'au moins une texture associé à cette zone.
[0035] Une telle structure de mémoire dans laquelle les listes de points - et éventuellement
d'autres données d'image - sont classées par zone permet d'appliquer le procédé décrit
ci-dessus.
[0036] Selon encore un autre aspect, l'invention a pour objet un programme d'ordinateur
comprenant des instructions pour mettre en oeuvre les étapes d'un procédé selon un
mode de réalisation de l'invention, lors d'une exécution du programme par des moyens
de traitement.
[0037] D'autres caractéristiques et avantages de l'invention apparaîtront encore à la lecture
de la description qui va suivre. Celle-ci est purement illustrative et doit être lue
en regard des dessins annexés sur lesquels :
- La figure 1 est un algorithme d'un exemple de procédé selon un mode de réalisation
de l'invention ;
- La figure 2 montre un exemple de dispositif selon un mode de réalisation de l'invention,
en communication avec un terminal;
- La figure 3 montre un terminal et un serveur selon un mode de réalisation de l'invention
;
- La figure 4 est un algorithme d'un exemple de procédé selon un mode de réalisation
de l'invention ;
- La figure 5 représente un exemple de partition d'un plan ;
- Les figures 6 à 8 montrent trois exemples de partitions, à des niveaux de résolution
différents ;
- Les figures 9 et 10 montrent deux exemples de partitions, à des niveaux de résolution
différents ;
- La figure 11 montre un exemple de polygone appartenant à une pluralité de zones ;
- Les figures 12 à 14 illustrent un exemple de procédé de détermination de listes de
points de polygones découpés à partir des points d'un polygone appartenant à une pluralité
de zones.
[0038] Des références identiques peuvent être utilisées d'une figure à l'autre, pour désigner
des éléments identiques ou comparables.
[0039] En référence à la figure 1, est représenté un organigramme d'un exemple de procédé
de prétraitement. Une liste de données d'images reçue lors d'une étape 100 permet
de paramétrer des objets tridimensionnels.
[0040] Ces objets peuvent obéir à un format boite ou à un format objet. Chaque objet au
format boite, indicé i, est considéré comme un cylindre de hauteur z
i et de base un polygone. Pour chacun de ces objets, la liste comporte une valeur de
paramètre de hauteur z
i, ainsi que les coordonnées dans un plan des points de la base polygonale x
ij, y
ij, j indiçant les points de la base. La liste de données d'image peut en outre comprendre
des coordonnées paramétrant les objets au format objet (c'est à dire les coordonnées
d'un certain nombre de points pour chaque objet), des paramètres de vecteurs normaux
ni à des surfaces des objets à représenter, des couleurs c
i, des données de texture, ou autre.
[0041] Sont également reçues un certains nombre de partitions du plan, chaque partition
correspondant à un niveau de résolution I. Chaque partition comporte des données permettant
de déterminer des zones Z
k,l, k indiçant la position de chaque zone dans le plan. Ces données peuvent par exemple
comprendre un nombre de lignes et un nombre de colonnes.
[0042] Pour chaque niveau de résolution I, et pour chaque objet du plan, on recherche si
cet objet appartient à une ou plusieurs zones, lors d'une étape de test 102. Des étapes
classiques d'initialisation, de test, et d'incrémentation sont effectuées de façon
à parcourir tous les objets de l'ensemble d'objets paramétrés par une base polygonale,
et tous les niveaux de résolution proposés.
[0043] Selon un mode de réalisation alternatif et non représenté sur la figure 1, on parcoure
les niveaux de résolution et les zones : pour chaque zone d'un niveau de résolution
donné, on recherche si il existe un polygone dans cette zone, et, pour chaque polygone
ainsi trouvé, on effectue un découpage de façon à ne conserver que la partie de ce
polygone qui est circonscrite dans la zone.
[0044] Pour revenir à l'exemple de la figure 1, dans lequel on parcoure les niveaux de résolution
et les polygones, si le test 102 montre que le polygone intersecte plusieurs zones,
alors on effectue un découpage de ce polygone de façon à obtenir des polygones découpés
appartenant chacun à une seule zone (étape 103). Les calculs mis en oeuvre seront
détaillés en référence aux figures 11 à 14.
[0045] Les polygones découpés sont stockés dans une mémoire structurée par niveaux de résolution,
et pour chaque niveau de résolution, structurée par zone correspondantes, de façon
à associer chaque polygone découpé à une zone donnée d'un niveau de résolution donné.
[0046] Si le test 102 montre que le polygone intersecte une seule zone, alors ce polygone
est stocké tel quel (sans découpage) dans la mémoire, de façon à associer ce polygone
à la zone intersectée.
[0047] Aussi, la partie de mémoire correspondant à un niveau de résolution donnée stocke-t-elle,
pour chaque zone, 0, 1 ou plusieurs polygones appartenant uniquement à cette zone.
[0048] Pour les objets au format objet appartenant à plusieurs zones, un traitement préliminaire
peut être effectué de façon à obtenir, à partir des coordonnées de points de ces objets,
une ou plusieurs surfaces polygonales projetées dans le plan (z=0). Le traitement
préliminaire peut comprendre une étape de projection, dans le plan (z=0), de chacune
des faces de l'objet au format objet. Les étapes 102 à 105 du procédé décrit ci-dessus
peuvent alors être appliquées à chacune de ces surfaces polygonales projetées. Puis,
à partir des polygones projetés et découpés, on détermine des coordonnées tridimensionnelles
de points. Les objets au format objet sont ainsi scindés en plusieurs objets, chaque
objet scindé appartenant à une seule zone.
[0049] En référence à la figure 2, un dispositif de traitement 200, par exemple un serveur,
est en communication avec un terminal 204, par exemple un téléphone portable, un assistant
personnel de type PDA (« Personal Digital Assistant » en anglais), ordinateur portable
ou autre.
[0050] Dans cet exemple, le terminal 204 est connu de l'art antérieur, et comporte de façon
classique un écran 209, un moteur graphique 208 et une antenne.
[0051] Le serveur 200 comporte une mémoire 201, dont le contenu est obtenu par des moyens
de traitement 240, par exemple un processeur. Ces moyens de traitement 240 sont agencés
pour effectuer les étapes du procédé de la figure 1.
[0052] La mémoire 201 est structurée par zones, chaque zone étant indicée k. Pour une zone
k donnée, sont conservées en mémoire zéro, une ou plusieurs listes de points, chaque
liste de points correspondant à un polygone circonscrit dans cette zone k donnée.
Les polygones ainsi associés à une zone donnée peuvent avoir été déterminés par le
processeur 240, par découpage d'un polygone appartenant à plusieurs zones.
[0053] Lorsqu'un utilisateur du terminal souhaite visualiser une scène depuis un point de
vue donné, le terminal détermine à partir de données reçues d'une interface utilisateur
des paramètres de navigation
u, ϕ
x, ϕ
z et ε correspondant respectivement à une translation, deux rotations, et une homothétie
(zoom).
[0054] Ces paramètres de navigation sont transmis à des moyens de traitement 202 du serveur
200, par exemple un processeur. Ce processeur 202 reçoit ces paramètres de navigation
(étape 401 sur la figure 4) et détermine à partir de ces paramètres de navigation
un jeu de zones (étape 402 sur la figure 4). Les zones de ce jeu de zones sont les
zones correspondant à des données d'image susceptibles d'avoir une incidence sur la
représentation à afficher. Par exemple, si les paramètres de navigation correspondent
à une partie en bas à droite du plan, alors les zones en haut à gauche du plan peuvent
d'ores et déjà être éliminées. Les calculs du moteur graphique 208 sont ainsi effectués
à partir d'un volume de données réduit, permettant ainsi de gagner du temps de calcul
pour un affichage équivalent.
[0055] Des moyens de sélection 203, par exemple un processeur, permettent de choisir des
listes de points correspondant à des polygones circonscrits dans les zones du jeu
de zones (étape 403 sur la figure 4). Dans le cas d'un polygone dont la plus grande
partie appartient à une zone exclue du jeu de zones, on évite au moteur graphique
d'effectuer des calculs pour les points de ce polygone exclus du jeu de zones.
[0056] Les listes de points des polygones sélectionnés sont envoyées au terminal, pour le
calcul d'une représentation par le moteur graphique 208 (étape 404 sur la figure 4),
en vue d'un affichage sur l'écran 209 (étape 405 sur la figure 4).
[0057] La figure 3 montre un terminal 204 incorporant des moyens de traitement 303 pour
déterminer, à partir de paramètres de navigation obtenus d'une interface utilisateur,
un jeu d'au moins une zone et d'au maximum 9 zones. Préalablement à l'étape de détermination
du jeu de zones, on détermine un niveau de résolution en fonction des paramètres de
navigation, ce niveau de résolution étant tel que le nombre de zones est le plus élevé
possible tout en étant inférieur à 9.
[0058] Le terminal envoie alors à un serveur un indice I_0 de ce niveau de résolution. Le
serveur 200 comporte une mémoire 310 structurée en sous-mémoires 301_1,..., 301_I
MAX, chaque sous-mémoire correspondant à un niveau de résolution donné. Chaque sous-mémoire
est structurée en zones. Lorsque l'indice I_0 est reçu, le serveur renvoie au terminal
les coordonnées des points de tous les polygones stockés dans cette sous-mémoire.
[0059] Le terminal incorpore en outre des moyens de sélection 303 pour filtrer ces points
de façon à ne conserver que les points associés aux zones du jeu de zones.
[0060] La figure 5 montre une partition d'un plan en zones indexées (k1, k2, I), k1 indiçant
les lignes, k2 les colonnes et I les niveaux de résolution. Cette partition peut permettre
de limiter la quantité de données à charger quand seulement une partie de cette vue
est à afficher. En effet, pour afficher une zone de visualisation 550, il suffit de
charger les images des zones (1, 1, 2), (2, 1, 2), (3, 1, 2), (1,2, 2), (2, 2, 2),
(3, 2, 2), (1,3, 2), (2, 3, 2) et (3, 3, 2).
[0061] L'organisation en zones permet d'appliquer les concepts de la multi-résolution, comme
représenté sur les figures 6, 7, 8, correspondant respectivement à une résolution
de I=2, I=1 et I=0. Chaque zone à un niveau de précision I est divisée en quatre sous-zones
identiques à un niveau de précision supérieur I - 1 et ainsi de suite. Ainsi, une
zone (k1, k2, I) occupe le même espace géographique que les quatre zones (2k1, 2k2,
I - 1), (2k1 + 1, 2k2, I-1), (2k1, 2k2 + 1, I - 1), (2k1 + 1, 2k2 + 1, I - 1) réunies.
[0062] Avec ce procédé on peut toujours déterminer neuf zones de sorte que n'importe quelle
fenêtre de visualisation 1200, 1300 reste dans ces neuf zones (voir les figures 9
et 10). L'image utilisée pour n'importe quelle zone à n'importe quel niveau de précision
a toujours la même taille. Les avantages du procédé sont les suivants :
- Préservation de la mémoire : on s'assure que la quantité totale de données chargées
est toujours inférieure ou égale à neuf fois la taille d'une zone. Dans un mode de
réalisation, on charge les points d'une zone entière même si seulement une partie
de cette zone correspond à de l'information affichable. Dans un autre mode de réalisation,
on se limite aux parties de zones correspondant à de l'information affichable.
- Multi-résolution : comme neuf zones à un niveau de précision I couvrent quatre fois
moins d'espace que neuf zones à un niveau de précision I+1, la qualité des données
augmente au fur et à mesure que l'on zoome (elle est multipliée par quatre).
- Format : les images sont carrées ou rectangulaires et les zones le sont, il est relativement
facile de les faire coïncider.
[0063] Une telle organisation peut contraindre à stocker environ 33% de données en plus
(conformément au
mipmap), mais ce stockage peut éventuellement être optimisé, par compression par exemple,
de façon à réduire le volume des données stockées.
[0064] Les figures 11 à 14 illustrent un procédé de détermination de listes de points correspondant
à des polygones découpés, à partir des coordonnées de points d'un polygone recouvrant
en partie plusieurs zones. On considère une zone Z = (B
0, ... ,B
3) et un polygone P = (A
0, ... ,A
N-1).
[0065] Pour des raisons de simplicité de notation, n indice ici les points du polygone P
et m les points des coins de la zone B, avec

[0066] Afin de distinguer les surfaces et frontières, on note Z la surface de la zone et
∂
Z le bord de la zone ; on note P la surface du polygone et ∂
P le bord du polygone.
[0067] Lors de l'étape de test 102 sur le figure 1, on examine si :
- Z ∩ P est vide (pas d'intersection), dans ce cas, on recommence le test en choisissant
une autre zone, de façon à parcourir toutes les zones jusqu'à ce que Z ∩ P ne soit
pas vide,
- P ⊂ Z: l'intersection est le polygone lui-même et Z ∩ P = P. On stocke alors le polygone
de façon à l'associer en mémoire à cette zone (étape 105 sur la figure 1).
- Z ⊂ P, c'est-à-dire l'intersection est la zone elle-même et Z ∩ P = Z. Dans ce cas, on
stocke les coordonnées des coins de la zone en tant que coordonnées d'un polygone
découpé.
[0068] Si on détecte une intersection non-triviale, le procédé décrit ci-dessous est exécuté.
On peut remarquer que l'intersection Z ∩ P ne donne pas nécessairement un unique polygone.
Il peut très bien s'agir de plusieurs polygones comme les deux rectangles sur la figure
14. Le calcul de Z ∩P se fait en quatre étapes décrites ci-après.
- On décompose arbitrairement ∂Z en quatre segments ouverts à droite disjoints [B0,B1[, [B1,B2[, [B2,B3[ et [B3,B0[. Pour chaque segment ouvert ]An,An+1[, on cherche les intersections avec les segments ouverts à droite [Bm,Bm+1[. Pour déterminer l'intersection des segments ]An,An+1[∩[Bm,Bm+1[, on cherche d'abord l'intersection des droites (An,An+1) ∩ (Bm,Bm+1). Si elle existe, elle est constituée d'un unique point C. Il faut alors calculer
les produits scalaires:

Si fP(C) appartient à ]0, 1 [ et fZ(C) appartient à [0, 1 [ alors {C} =]An,An+1[∩[Bm,Bm+1[. Etant donné que la zone est rectangulaire, l'intersection ]An, An+1[∩∂Z contient au plus deux points.
Sur la figure 13, on trouve par exemple que |A0, A1 [∩∂Z = {C0, C1}. On insère alors C0 et C1 entre A0 et A1 dans la liste, en tenant compte du sens de parcours. Pour déterminer le sens de parcours,
il suffit de reprendre les valeurs fP(C0) et fP(C1): plus elles sont faibles plus les points sont proches de A0, plus elles sont élevées, plus les points sont proches de A1. Le sens de parcours est donné à fP croissant.
En reprenant le procédé pour chaque segment, on définit un nouveau polygone, correspondant
dans notre exemple à la liste de points :

On pourra alors remarquer qu'intrinsèquement, les polygones P' et P coïncident exactement.
- On supprime simplement les sommets de P' qui sont en dehors de la zone Z afin d'obtenir
un polygone intégralement contenu dans la zone. On définit encore un nouveau polygone
qui vaut dans notre exemple :

- Si l'on se rapporte à l'exemple des figures 11 à 14, on s'attend à trouver deux polygones
alors qu'après exécution du procédé décrit ci-dessus, on n'obtient qu'une seule liste
de points. On peut en effet remarquer que sur cet exemple, les points C3 et C4 sont inclus dans le segment ]C7,C0[. On peut également noter que la partie comprise entre les points C3 et C4 est "plate" et qu'elle sert de jonction entre les deux rectangles que l'on s'attend
à obtenir.
[0069] Aussi, avantageusement, on effectue une étape supplémentaire consistant à insérer
en double, en triple, etc. les points du polygone qui sont sur un autre segment.
[0070] Sur cet exemple, on considère le segment ouvert ]C
0,C
7[. On parcoure les sommets du polygone dans le sens inverse et on insère ces sommets
s'ils sont entre C
0 et C
7. On tombe d'abord sur C
4 puis sur C
3 que l'on insère dans cet ordre.
[0071] On itère le procédé sur chaque segment et on ajoute le premier point à la fin. On
définit ainsi un nouveau polygone qui vaut dans cet exemple :

On pourra remarquer que les polygones P"' et P" coïncident exactement.
- Pour scinder le polygone, on cherche les points en double entre lesquels il n'y a
pas de points en double. Sur cet exemple, le point C0 apparaît deux fois (au début et à la fin). Entre les deux points C0 de la liste, le point C3 apparaît deux fois. Egalement, entre les deux points C3 de la liste, le point C4 apparaît deux fois. Entre les deux points C3 de la liste, il n'y a aucun point en double.
[0072] On considère la liste Q
0 des points entre les deux occurrences du point C
4 et la liste P
0 restante :

[0073] On réitère le procédé sur R
0 et on trouve :

[0074] On réitère le procédé sur R
1 et on trouve :

[0075] La liste restante est négligeable (un seul point) donc on met fin aux itérations.
L'intersection du polygone P et de la zone Z est constituée des polygones Q
0, Q
1 et Q
2, mais le polygone Q
1 comporte seulement deux points et ne définit donc pas une base polygonale. On ne
conserve que Q
0 et Q
2.
[0076] Ainsi, on applique ce calcul d'intersection à tous les polygones et à toutes les
zones de tous les niveaux de précision. On peut appliquer un principe de réduction
triangulaire tel que décrit dans la demande française
FR2903518, lorsque les paramètres de navigation correspondent au passage à un niveau moins
précis, en prenant quatre comme critère d'agrégation (puisqu'on diminue la précision
par quatre). La réduction doit néanmoins être appliquée avant le calcul d'intersection
pour que les intersections du polygone soient raccordées entre elles. Bien entendu,
on augmente encore la taille des données mais chaque polygone est bien contenu dans
une zone. L'organisation profite alors de toutes les propriétés déjà décrites.
1. Dispositif de traitement (200), en vue d'un affichage sur un écran (209) d'un terminal
(204) d'une image numérique représentant au moins une partie d'un ensemble d'objets
d'un point de vue défini par des paramètres de navigation, ledit ensemble d'objet
étant paramétré par une liste de données d'image comprenant, pour au moins un objet
dudit ensemble, des coordonnées de points d'un polygone dans un plan ({xij, yij}), ledit plan étant partitionné en un ensemble de zones ({Zk,l}), le dispositif comprenant
une mémoire (201) structurée par zones, chaque polygone appartenant à une pluralité
de zones étant stocké dans ladite mémoire sous la forme d'une pluralité de polygones
découpés (Q0, Q1, Q9), chaque polygone découpé appartenant à une seule zone, de sorte que chaque polygone
stocké dans ladite mémoire est associé à une seule zone,
des moyens de traitement (202) pour déterminer un jeu d'au moins une zone dudit plan
correspondant aux paramètres de navigation,
des moyens de sélection (203) agencés pour choisir, pour chaque zone du jeu de zones,
les coordonnées des points des polygones stockés dans la mémoire et associés à ladite
zone, pour le calcul d'une représentation, destinée à être affichée sur l'écran, de
l'ensemble d'objets selon ces paramètres de navigation.
2. Procédé de traitement, en vue d'un affichage sur un écran d'un terminal d'une image
numérique représentant au moins une partie d'un ensemble d'objets d'un point de vue
défini par des paramètres de navigation, ledit ensemble d'objet étant paramétré par
une liste de données d'image comprenant, pour au moins un objet dudit ensemble, des
coordonnées ({x
ij, y
ij}) de points d'un polygone dans un plan,
dans lequel
ledit plan est partitionné en zones ({Z
k,l}),
chaque polygone appartenant à une pluralité de zones est stocké dans une mémoire sous
la forme d'une pluralité de polygones découpés, chaque polygone découpé appartenant
à une seule zone, de sorte que chaque polygone stocké dans ladite mémoire est associé
à une seule zone,
ledit procédé comprenant :
déterminer (402) en fonction des paramètres de navigation un jeu de zones de ladite
partition dudit plan,
pour chaque zone dudit jeu de zones, choisir (403) les coordonnées des points des
polygones stockés dans la mémoire et associés à ladite zone pour le calcul d'une représentation,
destinée à être affichée sur l'écran, de l'ensemble d'objets selon les paramètres
de navigation.
3. Procédé selon la revendication 2, dans lequel on prévoit plusieurs niveaux de résolution,
chaque niveau de résolution (I_0) correspondant à un ensemble de zones ({Zk,l_0}) constituant une partition du plan et à un ensemble de polygones stockés ({Pk,l_0}), chaque polygone stocké dudit ensemble appartenant à une seule zone dudit ensemble
de zones.
4. Procédé selon la revendication 3, comprenant, préalablement à l'étape de détermination
du jeu de zones, une étape de détermination d'une partition (I_0) correspondant à
un niveau de résolution fonction des paramètres de navigation.
5. Procédé selon l'une des revendications 2 à 4, dans lequel la liste de données d'image
comprend, pour au moins une zone, un jeu d'au moins une texture associé à ladite zone.
6. Procédé, mis en oeuvre par des moyens informatiques, de pré-traitement d'une liste
de données d'images paramétrant un ensemble d'objets, en vue d'un affichage sur un
écran d'un terminal d'une image numérique représentant au moins une partie dudit ensemble
d'objets,
ladite liste de données d'image comprenant, pour au moins un objet dudit ensemble,
des coordonnées de points d'un polygone dans un plan ({x
ij, y
ij}), ledit plan étant partitionné en un ensemble de zones ({Z
k,l})
dans lequel, pour au moins un polygone de la liste de données d'images :
- on teste (102) si ledit polygone appartient à une pluralité de zones,
- si le test montre que le polygone appartient à une pluralité de zones, on détermine
(103) à partir des coordonnées des points dudit polygone, des coordonnées de points
d'un polygone découpé (Q0, Q1), chaque polygone découpé appartenant à une seule zone associée, et on stocke (104)
le polygone découpé dans une mémoire structurée par zones,
- si le test montre que le polygone appartient à une seule zone, on stocke (105) ledit
polygone dans ladite mémoire,
de sorte que chaque polygone stocké dans ladite mémoire appartient à une seule zone
associée.
7. Procédé de prétraitement selon la revendication précédente,
dans lequel, pour déterminer des coordonnées de points d'un polygone découpé à partir
de coordonnées de points d'un polygone appartenant à une pluralité de zones, pour
une zone de ladite pluralité :
on détermine les points d'intersections de segments du polygone avec les frontières
de ladite zone,
on insère ces points d'intersection dans une liste de points ordonnée correspondant
au polygone, entre les points extrémités des segments intersectés correspondants,
on supprime de ladite liste les points n'appartenant pas à ladite zone,
on recherche si des points de la liste appartiennent à un segment défini par d'autres
points de la liste, et le cas échéant on insère ces points dans la liste, entre ces
autres points,
on recherche les points apparaissant en double dans la liste, et entre lesquels il
n'y a pas d'autre points apparaissant en double, et le cas échéant on définit une
liste des points entre les deux occurrences desdits points apparaissant en double,
et une liste comprenant les autres points restants.
8. Dispositif de pré-traitement (200) d'une liste de données d'images paramétrant un
ensemble d'objets, en vue d'un affichage sur un écran d'un terminal d'une image numérique
représentant au moins une partie dudit ensemble d'objets,
ladite liste de données d'image comprenant, pour au moins un objet dudit ensemble,
des coordonnées de points d'un polygone dans un plan, ledit plan étant partitionné
en un ensemble de zones
ledit dispositif comprenant
une mémoire (201) structurée par zones, et,
des moyens de traitement (240) agencés pour, pour au moins un polygone de la liste
de données d'images :
- tester si ledit polygone appartient à une pluralité de zones,
- si le test montre que le polygone appartient à une pluralité de zones, déterminer
à partir des coordonnées des points dudit polygone, les coordonnées de points d'un
polygone découpé, chaque polygone découpé appartenant à une seule zone associée, et
stocker le polygone découpé dans la mémoire structurée par zones,
- si le test montre que le polygone appartient à une seule zone, stocker ledit polygone
dans ladite mémoire,
de sorte que chaque polygone stocké dans ladite mémoire appartient à une seule zone
associée.
9. Une mémoire de stockage (310) d'une liste de données d'images paramétrant un ensemble
d'objets, pour l'affichage sur un écran d'un terminal d'une image numérique représentant
au moins une partie dudit ensemble d'objets,
la liste de données d'image comprenant, pour au moins un objet dudit ensemble, des
coordonnées de points d'un polygone dans un plan,
dans lequel la mémoire est structurée par zones dudit plan,
et dans lequel chaque polygone appartenant à une pluralité de zones est stocké sous
la forme d'une pluralité de polygones découpés, chaque polygone découpé appartenant
à une seule zone,
de sorte que chaque polygone stocké dans la mémoire appartient à une seule zone associée.
10. Mémoire selon la revendication 8, ladite mémoire étant agencée de façon à stocker
en outre, pour au moins une zone, un jeu d'au moins une texture associé à ladite zone.
11. Programme d'ordinateur comprenant des instructions pour mettre en oeuvre les étapes
d'un procédé selon l'une des revendications 2 à 7 lors d'une exécution du programme
par des moyens de traitement.