> Des "tuiles" ? Quezako ?

Les tuiles permettent de d�couper la sc�ne en mini sc�ne pour g�rer moins
d'objet � la fois.

> Ahhh ! Je vois. Mais comment g�rer les objets qui sont aux 
> intersections de deux tuiles ? =)

Les objets sont pr�sents dans toutes les tuiles les contenants, m�me
partielement.

> En tout cas il est vrai que l'on peut 
> limiter les tests aux objets strictement visibles � l'�cran (ma zone de 
> dessin est scrollable avec un JScrollPane, donc tout n'est pas visible 
> en m�me temps)
si les objets sont nombreux et pas concentr� dans des zones, c'est tr�s
efficace.
Je parlais de carte g�ographique, car le nombre de donn�es � g�rer est
�norme et particuli�rement bien r�parti sur la zone cartographi�e.

> Dans tous les cas, tu dois maintenir une liste triee (en general elle 
> est dispo car utilisee pour l'affichage).

C'est tr�s habituel comme algorithme.
La seule difficult� est l'�dition de la profondeur (comment d�terminer la
profondeur d'un objet, comment la modifier et imposer une profondeur
diff�rente pour chaque objet se recouvrant).
Mais �a se fait :-)

C'est en gros ce que font les OS, quand une fenetre est activ�, elle est
plac� en premier plan c'est � dire en  d�but de liste.

--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
T�l. 01 41 96 96 76
Fax 01 41 96 96 77
M�l  [EMAIL PROTECTED] 
 

-----Message d'origine-----
De : Aurelien Mazurie [mailto:aurelien.mazurie@;free.fr]
Envoy� : jeudi 24 octobre 2002 12:11
� : [EMAIL PROTECTED]
Objet : Re: Une vieille �nigme (pour moi en tout cas)



> Tous les Os que je connaissent travaille par �l�ment graphique non
> recouvrant (soit un �l�ment graphique est � cot� d'un autre, soit il 
> est
> dedans mais jamais � cheval).

Ce que je citait comme exemple pour les OS c'est par exemple des bo�tes 
de dialogues les unes sur les autres: si un petit bout de bo�te est 
visible entre deux autres, comment l'OS sait-il que si l'on clique l� 
il faut aller chercher cette bo�te ?

> Un �l�ment graphique se conna�t, conna�t son p�re et conna�t ces fils.

Ici je n'ai aucune hi�rarchie: ce sont une s�rie d'�l�ments graphiques 
qui sont entre eux sur un m�me composant Swing (ce ne sont pas des 
composants en eux-m�me)

> Quand un clic survient, l'OS conna�t la fen�tre cliqu�e (il maintient 
> la
> liste des fen�tres � l'�cran et l'ordre d'affichage).
>
> La fen�tre conna�t ces fils et d�termine celui qui a �t� cliqu�
> Elle lui demande de d�terminer l'�l�ment cliqu�.
>
> Le Fils de la fen�tre regarde ces fils et d�termine celui qui a �t� 
> cliqu�,
> etc...
>
> Cet r�cursivit� s'arr�te quand un �l�ment n'a pas de fils cliqu�, c'est
> alors lui qui re�oit l'�v�nement de clic.
>
> Voil� en gros le principe (chaque OS a des subtilit�s).

Je vois, mais en fait ca ne s'applique pas � mon cas =)

> Pour le programmer en java, c'est pareil, tant qu'il n'y a pas de
> recouvrement.
> En cas de recouvrement, il faut pouvoir d�terminer parmis les fils 
> possible
> celui qui est le plus pertinent. Cela d�pend de ton programme et pose
> souvent probl�me.
>
> Cas classique un segment tout petit. Ton interface permet de 
> s�lectionner
> les points de contr�le (les extr�mit�s) pour modifier les extr�mit�s, 
> et le
> segment en lui m�me pour le d�placer sans modifier sa longueur et son 
> angle.
> A priori les points de contr�le sont prioritaire � la s�lection du 
> segment.
> Pour pouvoir s�lectionn� les point de contr�le on accepte une erreur 
> de 4
> pixels (cliqu� sur un pixel parmis 1600x1200 n'�tant pas �vident du 
> tout).
> Si ton segment fait moins de 8 pixels, on ne pourra jamais le 
> d�placer, on
> s�lectionnera invariablement les points de contr�le et jamais le 
> segment.
>
> Pour g�rer les formes tu peux utiliser l'API AWT (voir java.awt.Shape 
> et sa
> m�thode contains(Point2D p).

Ok

> Tu peux aussi utiliser la notion de couche d'�l�ment (� la sauve 
> z-buffer si
> tu as fait de la 3D), mais c'est complexe � g�rer et si tu as beaucoup 
> de
> donn�es c'est tr�s peu pertinent.

En fait je crois que c'est n�anmoins la meilleure solution � mon 
probl�me

> En cartographie, il est fr�quent de d�couper la carte en tuile et de
> d�terminer la tuile cible du clic et de ne travailler que sur les 
> �l�ment de
> la tuile. Cela �vite de monter en m�moire les routes, les chemins, les
> rivi�res, les for�ts, les laces,... proches de Marseille alors que le 
> clic
> c'est fait sur Lille.

Des "tuiles" ? Quezako ?

> Voil� un bref aper�u de la technique. Maintenant cela d�pend beaucoup 
> de ton
> projet.
>
> A+
>
>
> --------------------------------------------------------------------
> Erik Mazoyer, Chef de projet
> HyperOffice
> 6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
> T�l. 01 41 96 96 76
> Fax 01 41 96 96 77
> M�l  [EMAIL PROTECTED]
>
>
> -----Message d'origine-----
> De : Aurelien Mazurie [mailto:aurelien.mazurie@;free.fr]
> Envoy� : jeudi 24 octobre 2002 11:17
> � : [EMAIL PROTECTED]
> Objet : Une vieille �nigme (pour moi en tout cas)
>
>
>
>       Bonjour � tous,
>       Je programme depuis maintenant pr�s de 10 ans mais il y une chose,
> utilis�e dans tous les OS ayant une GUI depuis la nuit des temps, que
> je ne sais toujours pas faire (enfin, disons que j'ai trouv� un moyen
> d�tourn� de le faire): c'est le fait de savoir quel objet affich� �
> l'�cran (objets qui peuvent se recouvrir, partiellement ou totalement)
> est sous le curseur de la souris (pour que, lorsque l'utilisateur
> clique, l'on sache � quel objet envoyer le message).
>       A l'�poque o� j'avais programm� un jeu utilisant ce genre de
> fonction
> j'avais r�solu le probl�me en cr�ant un �cran virtuel o�, d�s lors
> qu'un objet �tait affich� dans l'�cran r�el, il laissait une emprunte
> de pixel d'une couleur donn�e (ie. si une bo�te de dialogue �tait �
> afficher, je dessinai dans l'�cran virtuel un rectangle au m�me
> endroit, avec une couleur unique: par exemple la couleur 1 si c'�tait
> l'objet n�1). Ensuite, � chaque clic de souris il me suffisait de lire
> la couleur du pixel aux coordonn�es correspondantes dans l'�cran
> virtuel, et je connaissait l'ID de l'objet � modifier en cons�quence.
>
>       Ca marchait tr�s bien pour un �cran de petite taille (320x200, le
> bon
> vieux mode 13h...) et pour le nombre d'objets � g�rer (256 couleurs,
> donc 255 objets + noir), mais d�j� � l'�poque je me demandait comment
> faisait les OS comme Windows 3.1 pour faire la m�me chose.
>
>       Or j'ai aujourd'hui � faire quelque chose de similaire en Java: j'ai
>
> plusieurs objets � l'�cran (dessin�s dans un BufferedImage), qui
> peuvent se recouvrire mais que je veux pouvoir s�lectionner � la souris
> sans passer par une d�tection de "l'objet le plus proche par sa
> position par rapport � celle du curseur". En r�sum�, il faut que je
> r�solve cette tr�s vieille �nigme pour moi et apprenne comment font les
> OS de la plan�te pour r�gler ce probl�me...
>       J'ai trouv� une librairie �crite en Java qui fait ca, et qui sert �
> afficher des donn�es g�ographiques (dans les exemples on a ainsi une
> carte d'un pays, et la souris allume les diff�rentes r�gions
> lorsqu'elle passe dessus); mais les sources sont tellement grosses que
> je ne suis pas parvenu � trouver la m�thode utilis�e...
>
>       Quelqu'un sait-il comment on r�alise cet exploit quotidien ?
>
>       Aur�lien Mazurie
>

Répondre à