IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[prg jeux ]Définir l'intersection de deux rectangles


Sujet :

Algorithmes et structures de données

  1. #1
    mat.M
    Invité(e)
    Par défaut [Resolu][prg jeux ]Définir l'intersection de deux rectangles
    Juste des petites questions de maths :

    c'est pour le développement d'un jeu de stratégie en 2D isométrique:

    pour afficher un personnage (sprite ) , il faut ses coordonnées ( en X et Y ) et la hauteur/largeur du rectangle définissant l'image qui représente le personnage.

    Quand la fenêtre représentant la zone de vue ( Viewport en anglais ) est fixe , pas de probléme, si l'écran fait 640x480 et que le personnage a pour coordonnées 200,250 avec une taille d'image ( bitmap ) de 100x50 , cela tient à l'écran et on peut afficher notre personnage aux coordonnées 200 et 250.


    Mais c'est lorsqu'on veut faire défiler l'écran dans tous les sens que cela se gâte ( scrolling ).
    Si le Viewport se trouve décalé à par exemple 640+640=1280 en X et 480+320=800 par exemple en Y , le personnage ne doit plus être représenté à l'écran s'il n'est plus contenu dans le "viewport".
    Et le problème aussi est de déterminer quel zone de l'image peut-être affichée à l'écran si une partie du "sprite" est contenue dans le "viewport" ( problème de "clipping").

    Tout est clair jusque là ???

    Donc pour faire plus bref :
    *comment déterminer si un rectangle est inscrit dans un autre ?
    * Et comment déterminer le rectangle à l'intersection du rectangle source ( le sprite donc zone affichable ) et rectangle cible (viewport ) ??

  2. #2
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Les API IsRectEmpty et IntersectRect me paraissent toutes désignées...

    [edition]
    Oops! Je me croyais dans le forum Développement Windows. Ma réponse n'est évidemment valable que sous Windows.
    [/edition]

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    j'ai un conseil pour toi:
    Il existe une libraire connue sous le nom de CGAL qui permet de faire de l'algo géométrique et à premiere vue elle serait adaptée a ton problème.
    J'ai pas programmé avec celle-ci mais des amis l'ont utilisé eux pour définir la vision d'un joueur dans un monde (pratique et compact et en plus elle existe pour windows et linux..)
    Allez a bon entendeur salut
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    bah ya "intersect" de Rectangle en java suffit d'aller chercher les sources pour voir comment ils ont fait

  5. #5
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    ca a pas l'air trop trop mechant, comme probleme. Tu dois pouvoir t'en sortir avec des tests assez simples :

    - test si x_perso + width_perso > x_viewport
    - test si x_perso < x_viewport + width_viewport
    - test si y_perso + height_perso > y_viewport
    - test si y_perso < y_viewport + height_viewport

    si les 4 conditions sont vraies, alors le personnage est visible a l'ecran, aux coordonnees :
    (x_perso-x_viewport ; y_perso - y_viewport)

    Pour le clipping, je pense qu'i faut voir ca en fonction de la bibliotheque graphique que tui utilise. En java, par exemple, le clipping est fait automatiquement avec la fenetre graphique visible, mais pn peut specifier une autre fenetre de clipping. Des possibilites similaires doivent exister avec MFC (enfin, j'espere !)

    Pour les coordonnees du rectangle a afficher :
    x1 = max(0, x_perso + width_perso- x_viewport);
    y1 = max(0, y_perso+height_perso - y_viewport);
    x2 = min(width_viewport, x_perso - x_viewport);
    y2 = min(height_viewport, y_perso - y_viewport);

    ca repond a ton probleme ?

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Oops! Je me croyais dans le forum Développement Windows. Ma réponse n'est évidemment valable que sous Windows
    Ce n'est pas grave Pierre , je prends en compte toutes les réponses et cela m'intéresse également.

    Il existe une libraire connue sous le nom de CGAL qui permet de faire de l'algo géométrique et à premiere vue elle serait adaptée a ton problème.
    Merci Korta , je vais rechercher cela.


    Des possibilites similaires doivent exister avec MFC (enfin, j'espere !)
    Merci Bcp Kangourou, j'ai trouvé un algorithme quasi-similaire.
    Le jeu que je développe n'utilise absolument rien des MFC ( plutôt Direct X ). Peut-être un portage sous Linux sera envisagé...

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Je remercie tout le monde pour les réponses.
    J'ai mis "résolu" dans le titre du message mais toute personne passant par la suite et qui a d'autres idées , qu'elle n'hésite pas , je suis preneur de tout.

Discussions similaires

  1. Intersection de deux rectangles
    Par Patata3 dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 14/04/2014, 15h43
  2. Détecter l'intersection entre deux rectangles
    Par Arnaud F. dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 10/07/2009, 09h43
  3. surface de l'intersection de deux triangles quelconques
    Par zekey dans le forum Mathématiques
    Réponses: 35
    Dernier message: 07/10/2007, 13h12
  4. [debutant] intersection de deux plages horaires
    Par absolut75 dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 24/05/2006, 13h03
  5. Intersection de deux courbes quelconques
    Par ShootDX dans le forum Algorithmes et structures de données
    Réponses: 32
    Dernier message: 31/03/2006, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo