Intersect rectangles

Skarwild Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Fais voir ton code, impossible de t'aider sinon !
0
Skarwild Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
 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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ces deux rectangles ne s'intersectent pas, c'est donc normal d'avoir false...

0
Skarwild Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai probablement un problème d'affichage car à l'écran ils s'intersectent
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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