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 :

Collision en diagonale


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Collision en diagonale
    Bonjour,
    je cherche un algorithme permettant de trouver le nombre de pixels qui sépare deux rectangles par rapport à une diagonale précise.
    En fait, je souhaite déterminer de combien de pixels, je peux translater un rectangle dans une direction précise (diagonale) sans qu'il n'entre en collision avec le second.



    Avec l'exemple ci dessus en considérant qu'on souhaite déplacer le rectangle du bas selon la diagonale allant vers le haut et la droite, l'algorithme devrait me donner comme résultat 2px.
    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Pour chaque rectangle tu as 4 données:
    Xmin, Xmax, Ymin, Ymax
    Commence par exprimer les conditions entre
    Xmin1,Xmax1,Ymin1,Ymax1,Xmin2,Xmax2,Ymin2,Ymax2
    sous forme d'inégalités pour qu'ils ne se coupent pas (c'est long mais simple)
    Donc tu écris un postulat à 8 paramètres à valeur booléen.
    Ensuite tu fais une boucle.
    Si R1 avance sur une diagonale en montant tu as à chaque tour de boucle un incrément des 4 paramètres de R1.
    A chaque step tu appelles le postulat.

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Tu peux aussi découper le problème en 2 :

    - distance pour intersection (horizontale) de deux bandes verticales de hauteur infinie
    - distance pour intersection (verticale) de deux bandes horizontales de largeur infinie
    - prendre la plus petite distance

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Je tiens d'abord à remercier les personnes qui m'ont répondu.

    Pour trouver la distance en diagonale j'ai cherché les équations qui déterminent la collision des rectangles.
    J'ai trouvé :
    (xmin1 <= xmin2 <= xmax1 ou
    xmin1 <= xmax2 <= xmax1 ou
    xmin2 <= xmin1 <= xmax2 ou
    xmin2 <= xmax1 <= xmax2)
    et
    (ymin1 <= ymin2 <= ymax1 ou
    ymin1 <= ymax2 <= ymax1 ou
    ymin2 <= ymin1 <= ymax2 ou
    ymin2 <= ymax1 <= ymax2).

    Ensuite j'ai déterminé comment changeaient les xmin, xmax, ymin et ymax en fonction du nombre du décalage.

    Et, avec tout ceci je trouve le nb de décalages minimum pour qu'il y ai collision auquel j'enlève un.

    Ma démarche vous semble elle correcte ?

Discussions similaires

  1. algorithme de collision 3D
    Par chetropinchuste dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/02/2010, 13h16
  2. [java3D][collision]
    Par geofun dans le forum 3D
    Réponses: 7
    Dernier message: 12/02/2007, 14h49
  3. Test de collision en 2D
    Par GLDavid dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/02/2004, 10h12
  4. Gestion des collisions - terrains
    Par Dranor dans le forum DirectX
    Réponses: 1
    Dernier message: 26/06/2003, 18h50
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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