Gestion des collision en java

Fermé
mc.deelf - 18 mars 2007 à 19:33
 Utilisateur anonyme - 20 mars 2007 à 11:25
Bonjour a tous j'ai crée un panel qui m'affiche des images en souche avec un double buffer et j'essai de gerer la gestion des collision de ces images que voici:
la resolution d'ecran est de 1024*768
sur la premiere couche j'ai mis l'image de fond de dimension 4000*2700 par exemple et le programme fait defiler limage fond pour visualiser toute l'image.
sur la seconde couche j'ai mis deux autres images dont l'une est par exemple à la position 400*400 et l'autre est à la position 3500*1500 lorsque l'image de fond bouge les deux images ne bouge pas alors je les aie soumises à des translations qui leur permettront aussi d'avancer et d'etre visible sur la fenetre(1024*768);
Probleme: pour gerer la collision entre les deux images en seconde couche c'est tout un probleme car les rectangles de ces deux images ne se rencontrent pas puisque en gestion de collision j'ai que cette notion d'intersectin entre deux rectangles pour gerer les collisions.je me demande ce qu'il y a de mieux à faire pour gerer la collision faut il un projection orthogonale ou je sais pas mais franchement j'ai du mal et ca fait une semaine que je me prends la tete aider moi s'il vous plait.
Merci et bonne soirée.
A voir également:

1 réponse

Utilisateur anonyme
20 mars 2007 à 11:25
Salut!

Tou d'abord, tu devrais stocker tous les objets qui se trouve dans une "couche" dans une map du type Map<Object,Set<Object>> où la clé (Object) est par exemple le nom de la couche ou son numéro et ou le Set<Object> contient tous les objets présents dans cete couche.

Tu dois ensuite effectuer le calcul de collisions entre les objets de la même couche et cela couche par couche.

Pour savoir si il y a collision:

Tu connais (ou tu peux calculer) la position de tes deux images ainsi que la taille de tes images.

Imaginons que le coin supérieur gauche de ton image A ait la coordonnée (xa1, ya1) et que la coordonnée du coin supérieur gauche de ton iame B ait la coordonnée(xb1,yb1).

La coordonnée du coin inférieur droit de ton image A sera (xa1+largeurImageA,ya1+hauteurImageA). Nous appellerons cette coordonnée (xa2,ya2).

Faisons la même chose avec l'image B et nous trouvons (xb2,yb2).

Calcule ceci (toutes les valeurs sont du type double)

double chevauchementX = Math.signumn((xa1-xb2)*(xa2-xb1));
double chevauchementY = Math.signumn((ya1-yb2)*(ya2-yb1));


Si chevauchementX=chevauchementY=-1.0, il y a collision

;-)
HackTrack
4