Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2013-12-12 10:32:26 Variable dans une class

duke duker
nouveau membre
Date d'inscription: 2013-12-11
Messages: 6

Variable dans une class



Bonjour!

Mon problème en ce jours est double. Je vais cependant commencer par le premier, je détaillerai le second plus tard...

J'essaie de faire correspondre la position d'une balle (ellipse) à celle d'une reconnaissance visuel dans un autre sketch processing par osc. Cela fonctionne parfaitement jusqu'à ce que je transforme ma simple ellipse en class Ball...

Le but à terme est que cette balle vienne percuter des rectangles. Mon second problème est l'introduction de la vélocité de cette dite balle...

J'espère avoir été le plus clair possible...

Merci d'avance!

Dernière modification par duke duker (2013-12-12 10:32:44)

Hors ligne

 

#2 2013-12-12 10:33:39 Re : Variable dans une class

duke duker
nouveau membre
Date d'inscription: 2013-12-11
Messages: 6

Re: Variable dans une class



Et le sketch de position par osc

Hors ligne

 

#3 2013-12-13 06:18:52 Re : Variable dans une class

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: Variable dans une class



bonjour

je n'ais pas compris ton programme,je l'ais télécharger mais rien ne se passe.Je T'envois un programme avec des ellipses et des rectangles qui se déplacent,mais je ne sais pas si sa va pouvoir t'aider.

Balle[]maballe=new Balle[10];
Boite[]maboite=new Boite[10];
void setup()
{
  size(500,500);
  for(int i=0;i<10;i++)
  {
    maballe[i]=new Balle(random(width),random(height));
    maboite[i]=new Boite(random(width),random(height));
  }
}
void draw()
{
  background(255);
  for(int  i=0;i<10;i++)
  {
    maballe[i].display();
    maballe[i].mouvement();
    maballe[i].collision();
    maboite[i].display();
    maboite[i].mouvement();
    maboite[i].collision();
  }
}
class Balle{
  PVector position;
  PVector mouvement;
  Balle(float px,float py){
  position=new PVector(px,py);
  mouvement=new PVector(-1,1);
  }
  void display()
  {
    ellipse(position.x,position.y,20,20);
  }
  void mouvement()
  {
    position.add(mouvement);
  }
  void collision()
  {
    if(position.x<0||position.x>width)
    {
      mouvement.x=mouvement.x*-1;
    }
    if(position.y<0||position.y>height)
    {
      mouvement.y=mouvement.y*-1;
    }
  }
      
}
class Boite{
  PVector position;
  PVector mouvement;
  Boite(float px,float py){
    position=new PVector(px,py);
    mouvement=new PVector(1,-1);
  }
  void display()
  {
    rect(position.x,position.y,40,40);
  }
  void mouvement()
  {
    position.add(mouvement);
  }
  void collision()
  {
    if(position.x<0||position.x>width)
    {
      mouvement.x=mouvement.x*-1;
    }
    if(position.y<0||position.y>height)
    {
      mouvement.y=mouvement.y*-1;
    }
    

  }
}

Hors ligne

 

#4 2013-12-13 11:08:56 Re : Variable dans une class

duke duker
nouveau membre
Date d'inscription: 2013-12-11
Messages: 6

Re: Variable dans une class



Merci!
Mais j'arrive à faire ce genre de chose, ce que je voudrais c'est qu'une des balles, que je dirige grâce à ma webcam, vienne percuter les boites...
As-tu une idée?

Hors ligne

 

#5 2013-12-13 17:51:26 Re : Variable dans une class

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Variable dans une class



Bonjour,

Dans ta classe Ball, la méthode de mise à jour update ne donne pas une nouvelle valeur à ta variable position.

void update(PVector nouvellePosition) {
    oldPosition = Position;
    Position = nouvellePosition;
}

et dans le draw() :

    b.update(new PVector(moyX, moyY));

Hors ligne

 

#6 2013-12-13 18:40:32 Re : Variable dans une class

duke duker
nouveau membre
Date d'inscription: 2013-12-11
Messages: 6

Re: Variable dans une class



En fait, les variables moyX et moyY viennent d'un autre sketch qui récupère la position d'un pointeur sur ma webcam. J'aimerais que ma Ball ait donc c'est valeurs pour position... Et ensuite arrivé à calculer la vitesse de cette balle en fonction de la dernière position... mais je ne suis pas du tout à l'aise avec les class

Merci pour votre réponse!

Hors ligne

 

#7 2013-12-14 10:38:02 Re : Variable dans une class

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Variable dans une class



J'ai bien compris ton souhait, c'est pour cela que je t'ai donné la réponse.
Pour la vitesse il suffit que tu insères dans la méthode update :

vitesse = Position - oldPosition;

Hors ligne

 

#8 2013-12-16 03:49:21 Re : Variable dans une class

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: Variable dans une class



je te fais parvenir un programme de collision .

int nb=10;
ArrayList<Balle>balle;
void setup() {    
  size(800, 700); 
  balle=new ArrayList<Balle>();
  for (int i=0;i<nb;i++) {    
    balle.add(new Balle(random(width), random(height), -1, 1));
  }
}    
void draw() {    
  background(255);    
  for (int i=0;i<balle.size();i++) {  
  Balle b=balle.get(i);  
    b.rebondir();    
    b.bouger();
  }    
  for (int i=0;i<balle.size();i++) {    
    for (int j = i + 1 ; j < balle.size(); j++) {   
     Balle b=balle.get(i); 
     Balle c=balle.get(j);
      b.collision(c);
    }
  }
  for (int i=0;i<balle.size();i++) { 
 Balle b=balle.get(i);   
    b.afficher();
  }
}    

class Balle {    
  PVector position;    
  PVector deplacement;  
  int rayon;   
  boolean bing; 

  Balle(float px, float py, float dx, float dy) {    
    position = new PVector(px, py);    
    deplacement=new PVector (dx, dy);    
    rayon = 20;
  }    

  void rebondir() {   
    bing = false; 
    if (position.x > width|| position.x < 0)  
    {  
      deplacement.x=deplacement.x*-1;
    }    
    if (position.y >height||position.y<0)  
    {    
      deplacement.y= deplacement.y* -1;
    }
  }    

  void bouger() {   
    position.add(deplacement);
  }    

  void collision(Balle j) {    
    float distance = position.dist(j.position);   
    if (distance<40) {
      bing = true;
      j.bing = true;
      if(mousePressed)
      {
        balle.add(new Balle(mouseX,mouseY, -2, 1));
  }
    if(balle.size()>30)
    {
      balle.remove(10);
    }
    else {
      fill(0, 255, 255);
    }
 
    }
  }

  void afficher() {
    if (bing) {
     deplacement.x=deplacement.x*-1;
     deplacement.y=deplacement.y*-1;
    
    } 
  
    ellipse(position.x, position.y, 40, 40);
} 
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024