bonjour;
un problème sur un programme ,je voudrais que le rectangle tourne de 90° à chaque fois qu'il rencontre un bord.
Cela me semblais simple au premier abord ,mais j'y ais perdus mon latin et aussi mon cerveau.
Si quelqu'un a une idée elle serai la bienvenue.
Merçi.
float angle=90; float x=200; float y=200; void setup() { size(500,500); angle=1; } void draw() { background(255); x=x+1; if(x>480) { angle=90; y=y+1; x=480; if(y>400) { angle=90; x=x-1; if(x<0) { angle=90; println(x); y=480; } } } translate(x,y); rotate(radians(angle)); rect(0,0,50,20); }
Hors ligne
Bonjour,
Il faut essayer de penser cas général pour simplifier au maximum l'écriture :
float angle; PVector position, vitesse; int marge; void setup() { size(500, 500); angle = 0; marge = 20; position = new PVector(width / 2, height / 2); vitesse = new PVector(1, 0); rectMode(CENTER); } void draw() { background(255); position.add(vitesse); if ((position.x < marge) || (position.x > width - marge) || (position.y < marge) || (position.y > height - marge)) { position.sub(vitesse); angle += PI / 2; vitesse.set(cos(angle), sin(angle)); } translate(position.x, position.y); rotate(angle); rect(0, 0, 50, 20); }
Hors ligne
bonjour;
je te remercie pour ton programme;j'ai pratiquement tous compris ,sauf la ligne:
vitesse.set(cos(angle), sin(angle));
avec l'instruction set je vais regarder a quoi cela correspond.
merçi.
Hors ligne
La méthode set() de la classe PVector défini les composants de ce vecteur.
J'ai voulu trouver une relation entre les angles 0, PI / 2, PI, 3 * PI / 2 et la direction que prend le mobile
Le cosinus et le sinus remplissent ce rôle.
Hors ligne
bonjour ;
Merci pour cette explication,une petite question existe t'il un debug pour processing ou un logiciel qui aurais un debug et sur lequel on pourrais transposer les programmes écrits avec processing.
Hors ligne
Il existe un autre IDE appelé Eclipse ( http://www.eclipse.org) fait pour coder en Java.
Il est extrêmement complet et tu peux intégrer Processing dedans :
http://processing.org/tutorials/eclipse/
Bon courage.
Hors ligne
merci pour ta réponse, effectivement j'ai déjà vu ce nom de programme sur le net pour coder en java,je vais le télécharger pour voir ce que ça donne.Une question au sujet du constructeur,quant on construit une classe il faut mettre dans le setup ?ex:maBalle=New Balle(100,100);si Balle est la classe et ensuite la position d'un vecteur ou de plusieurs.
ex:maballe=new Balle(100,100,-1,1);
si dans la classeil y a:
class Balle
{
PVector position;
PVector deplacement;
pour voir si j'ai bien tous compris.
Hors ligne
Non, pas tout à fait. Dans l'exemple suivant lors de la déclaration de ta variable Balle est la classe.
Dans le setup() lorsque tu instancies la variable, c'est le constructeur de la classe qui est appelé. Dans l'exemple il y a surcharge de méthode.
Balle maBalle1, maBalle2; // Balle est la classe void setup() { maBalle1 = new Balle(100, 100); // Balle est le constructeur de la classe maBalle2 = new Balle(100, 100, 1, -1); } class Balle { PVector position; PVector deplacement; Balle(float x, float y) { position = new PVector(x, y); deplacement = new PVector(1, 1); } Balle(float x, float y, float u, float v) { position = new PVector(x, y); deplacement = new PVector(u, v); } }
Hors ligne
bonjour
oui je vois ;donc il faut mieux mettre les informations concernant la classe balle dans le constructeur;
ex: Balle(float x, float y,float dx,float dy) {
position = new PVector(50, 50);
deplacement = new PVector(-1, 1);
par exemple.
}
d'autre part es t'il possible de faire un tableau avec des vecteurs
ex:float [] PVector balle;
Je suis allez sur le site d'eclispe,mais je ne sais pas quel programme il me faut ;il y en a une dizaine qui ont
différentes utilisation, suivant les besoins ,mais je n'ais pas su lequel choisir.
merci.
Hors ligne
C'est encore un peu confus pour toi, soit tu initialises par défaut tes variables dans ton constructeur, et dans ce cas là tu n'as pas besoin de paramètre dans cette méthode :
Balle() { position = new PVector(50, 50); deplacement = new PVector(-1, 1); }
Soit tu initialises les variables avec les paramètres :
Balle(float x, float y, float dx, float dy) { position = new PVector(x, y); deplacement = new PVector(dx, dy); }
Oui, tu peux faire des tableaux de de classe, mais la notation est la suivante :
PVector[] balle;
C'est bien de poser des questions tant que tu n'as pas tout compris. La pédagogie est l'art de la répétition.
Dans le lien que j'ai indiqué, il est marqué qu'il faut :
Eclipse IDE for Java Developers
Dernière modification par Mushussu (2013-10-19 06:44:01)
Hors ligne
c'est encore très flou;je regarde des programmes et je vois qu'il existe différentes façons d'initialiser le constructeur,j'en ai essayez certaines mais je retombe toujours sur le problème que si je ne mets pas de valeurs dans la ligne qui se trouve dans le setup :
ex:balle=new PVector(100,100,-1,1)+d'autres si nécessaire, j'ai toujours une erreur qui m'indique qu'il manque quelque chose dans la ligne citée ci-dessus .C'est pourquoi je ne comprends pas comment faire autrement et si il y a une surcharge je ne sais pas comment faire pour régler le problème(ou les surcharges n'ont pas de conséquences sur le bon déroulement du programme) .
merci pur tous tes conseils.
Hors ligne
Regarde ici :
http://processing.org/reference/PVector.html
Dans le paragraphe constructor, il y a trois possibilités pour initialiser un PVector.
Dans ton setup :
setup() { v1 = new PVector(); v2 = new PVector(100, 200); v3 = new PVector(100, 200, 300); }
Les trois façons sont valides, il y a surcharge de méthodes avec 0, 2, ou 3 paramètres. Dans la classe PVector
Dans tes propres classes c'est toi qui décide du nombre de paramètres. Dans celles existantes, c'est précisé normalement dans les aides.
Hors ligne
Oui très bien pour les vecteurs,mais je parlais de la ligne,qui se trouve dans le setup j'e t'envoi un petit programme
Triangle1 montriangle;
float c,s;
void setup()
{
size(1000, 500);
montriangle=new Triangle1(100,100,250,250,250,100,c,s); // cette ligne là; si je ne mets pas le bon nombres
// de paramètres ici(c'est à dire le nbs d'èlèments qui se trouvent sous la ligne(float,float,ect) il me renvoi des //erreurs , ça doit être comme ça ? ou ça peut être différent?
}
void draw()
{
background(255);
montriangle.dessine();
montriangle.bouge();
}
class Triangle1{
PVector position1;
PVector position2;
PVector position3;
PVector deplacement;
float c,s;
Triangle1(float x, float y,float xa,float ya,float xb,float yb,float dx,float dy ) {//cette ligne là:
position1=new PVector(x,y);
position2=new PVector(xa,ya);
position3=new PVector(xb,yb);
deplacement=new PVector(dx,dy);
c=cos(0.02);
s=sin(0.02);
}
void dessine()
{
triangle(position1.x,position1.y,position2.x,position2.y,position3.x,position3.y);
}
void bouge()
{
position1.x+=c;
position1.y+=s;
}
}
Hors ligne
Tout à fait, il est nécessaire que le nombre de paramètre que tu passse dans l'initialisation de ta variable soit le même que celui de la classe.
Si tu souhaites mettre un nombre de paramètre différent, il est nécessaire de surcharger la méthode constructeur avec 0, 2, 6 etc… paramètres.
Hors ligne
Merci pour ta réponse, maintenant c'est beaucoup plus clair ,car c’étais surtout cette ligne qui me posait problème.Je ne comprenais pas exactement ce qu'il fallait mettre dedans.
merci.
Hors ligne