Intersect rectangles

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

0
Skarwild Messages postés 7 Statut Membre
 
j'ai probablement un problème d'affichage car à l'écran ils s'intersectent
0
KX Messages postés 19031 Statut Modérateur 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