Intersect rectangles

Fermé
Skarwild Messages postés 5 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 22 mars 2015 - 9 févr. 2014 à 19:32
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 9 févr. 2014 à 21:34
Bonjour,

Je suis débutant en java et j'ai un petit problème, je cherche l'intersection de deux rectangles

pour ça je fais la collision entre un petit rectangle et un plus gros rectangle Rectangle(50, 50, 200, 20) .

Le problème c'est que lorsque je fais r1.intersects(r); l'intersection ne marche que pour le coté du haut , pour le coté bas, droit et gauche il ne détecte aucune collision.

Cordialement

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
9 févr. 2014 à 19:59
Fais voir ton code, impossible de t'aider sinon !
0
Skarwild Messages postés 5 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 22 mars 2015
Modifié par Skarwild le 9/02/2014 à 20:29
 public Boolean isCollided(Rectangle r){
return terrain.intersects(r);
}
avec terrain : private Rectangle terrain = new Rectangle(50, 50, 200, 20);
le rectangle avec lequel j'apelle la fonction :
java.awt.Rectangle[x=200,y=284,width=16,height=16]
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
9 févr. 2014 à 20:43
Ces deux rectangles ne s'intersectent pas, c'est donc normal d'avoir false...

0
Skarwild Messages postés 5 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 22 mars 2015
9 févr. 2014 à 20:58
j'ai probablement un problème d'affichage car à l'écran ils s'intersectent
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
9 févr. 2014 à 21:34
Un exemple d'affichage :

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Rectangle;

import javax.swing.JFrame;

public class Test
{
    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.add(new Component()
        {
            Rectangle r1 = new Rectangle(50, 50, 200, 20);
            Rectangle r2 = new Rectangle(200, 284, 16, 16);
            
            public void paint(Graphics g)
            {
                g.drawRect(r1.x, r1.y, r1.width, r1.height);
                g.drawRect(r2.x, r2.y, r2.width, r2.height);
            }
        });
        
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
0