Annonce

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


#1 2012-08-30 15:09:41 problème pour contenir des événements aléatoires dans un rectangle

mfm
membre
Date d'inscription: 2012-08-30
Messages: 37

problème pour contenir des événements aléatoires dans un rectangle



Bonjour à tous,

nouveau membre (mais lecteur de ce forum depuis quelques mois déjà…), donc une petite présentation préalable :

bon, voilà je bidouille (dans mon cas, pure autodidacte en codage, cela reste, à ce jour, de la bidouille…) processing depuis 2 mois environ, essentiellement dans l'optique d'essayer de coder des bandes-dessinées (oui…) et en particulier pour y exploiter l'aléatoire, le hasard.

Bon bref, me voilà avec un petit souci de code (probablement très bête…) que je ne vois pas comment résoudre correctement :

for (int i = 0; i < 80; i +=10) {
     int y = 80 + round(random(-i,i));
     if (y > 130) {
      y = 80 + round(random (-i, + i));
     }
      line (i,y,i+5,y);
    }

Les lignes doivent impérativement se trouver dans un rectangle de 130 pixels de haut — c'est pour cela que j'ai rajouté

 if (y> 130) {
y = 80 + round(random(-i, i));
}

au cas où y > 130 et que les lignes dessinées se retrouvent en dehors du rectangle et afin de les replacer dans le rectangle (une case en fait). Mais cela ne marche pas apparemment… sad
Donc si l'un d'entre vous a idée du comment résoudre ce petit bug, je suis tout ouïe ; et ce serait fort gentil de sa part !

ps : je ne sais pas si le titre du sujet est clair ou pas… sad

Hors ligne

 

#2 2012-08-31 11:34:00 Re : problème pour contenir des événements aléatoires dans un rectangle

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: problème pour contenir des événements aléatoires dans un rectangle



Salut,

je ne sais pas si j'ai bien compris ce que tu attendais mais voici une proposition :

int x = 25, y = 25, w = 50, h = 50;
rect(x, y, w, h);

for (int i=x; i<w+x; i +=10) {
  for (int j=y; j<h+y; j +=10) {
    int choix = int(random(10));
    if (choix<5) {
      line (i, j, i+5, j);
    }
  }
}

puisse t-elle t'aider smile

Dernière modification par oyster_twiter (2012-08-31 11:34:24)

Hors ligne

 

#3 2012-08-31 16:22:28 Re : problème pour contenir des événements aléatoires dans un rectangle

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: problème pour contenir des événements aléatoires dans un rectangle



Pour manipuler des rectangles, je te recommande la classe Rectangle de java :
http://docs.oracle.com/javase/1.4.2/doc … angle.html
Tu défini un rectangle, ensuite tu peux le dessiner, tester si un point est dedans ou non,ect...

Hors ligne

 

#4 2012-08-31 17:12:31 Re : problème pour contenir des événements aléatoires dans un rectangle

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: problème pour contenir des événements aléatoires dans un rectangle



THE EASY WAY: mets "while" à la place de ton "if"
ça permet de vérifier la condition jusqu'à ce qu'elle soit fausse

Hors ligne

 

#5 2012-08-31 18:30:08 Re : problème pour contenir des événements aléatoires dans un rectangle

mfm
membre
Date d'inscription: 2012-08-30
Messages: 37

Re: problème pour contenir des événements aléatoires dans un rectangle



@oyster_twiter : merci mais malheureusement ce n'est pas vraiment ce que je cherche à faire — la position y de mes traits doit être définit aléatoirement par rapport à la position x de ceux-ci, donc à i —.
Mais j'ai finalement contourné le problème "à la main" en écartant ceux où les traits sortaient des cases (le but était de constituer un pdf qui réunissait un certain nombre de ces strips générés aléatoirement).

@cgiles : merci, je regarderai ça à l'occasion. Je suppose que c'est quelque chose à importer sous forme de library dans processing ?

@Maklo135 : merci, je vais tester ça.

Hors ligne

 

#6 2012-08-31 19:12:34 Re : problème pour contenir des événements aléatoires dans un rectangle

mfm
membre
Date d'inscription: 2012-08-30
Messages: 37

Re: problème pour contenir des événements aléatoires dans un rectangle



Makio135 a écrit:

THE EASY WAY: mets "while" à la place de ton "if"
ça permet de vérifier la condition jusqu'à ce qu'elle soit fausse

Je dois merder qq part mais ça l'air de buguer/ ramer pas mal avec cette méthode sad :

for (int i = 0 ; i < 80 ; i += 10) {
      int y = 80 + round(random(-i, i));
 while (y< 130) {
y = 80 + round(random(-i, i);
}
line (i, y, i +5, y);
}

Il y a un truc qui cloche ?

Hors ligne

 

#7 2012-08-31 19:42:09 Re : problème pour contenir des événements aléatoires dans un rectangle

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: problème pour contenir des événements aléatoires dans un rectangle



while(y>130)
tu as changé le signe par rapport à ton premier code...

Dernière modification par Makio135 (2012-09-01 10:48:19)

Hors ligne

 

#8 2012-09-01 11:09:10 Re : problème pour contenir des événements aléatoires dans un rectangle

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: problème pour contenir des événements aléatoires dans un rectangle



Pour la classe rectangle elle fait partie de java, donc pas besoin d'importer de librairie.

En faite Processing est une librairie Java, donc en plus de java. Ce qui fait que l'on bénéficie de toutes les fonctions Java

Hors ligne

 

#9 2012-09-01 11:59:04 Re : problème pour contenir des événements aléatoires dans un rectangle

mfm
membre
Date d'inscription: 2012-08-30
Messages: 37

Re: problème pour contenir des événements aléatoires dans un rectangle



@Makio135 : oui, un acte irréfléchi de ma part smile Merci.

@cgiles : cool, merci.

Pour "l'importer", je tape donc :

rectangle rectangle1 = new rectangle ();

, et rien d'autre ?

edit : @Makio135 : cela a l'air de fonctionner comme il faut wink

Dernière modification par mfm (2012-09-01 12:02:11)

Hors ligne

 

#10 2012-09-01 12:29:18 Re : problème pour contenir des événements aléatoires dans un rectangle

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: problème pour contenir des événements aléatoires dans un rectangle



wink

Quant à la classe Rectangle il faut bien l'importer même si c'est du Java (heureusement que Processing ne charge pas toutes les classes Java d'ailleurs).

Voici un petit exemple de son utilisation qui vérifie si la souris est dans un Objet Rectangle grâce à la méthode contains() de cette classe:

import java.awt.Rectangle;

Rectangle r;

void setup() {
  size(200, 200);
  r = new Rectangle(50, 50, 100, 100);
}

void draw() {
  background(0);
  rect(r.x, r.y, r.width, r.height);//afficher notre Rectangle r
  println(r.contains(mouseX, mouseY));
}

Dernière modification par Makio135 (2012-09-01 12:31:40)

Hors ligne

 

#11 2012-09-01 15:52:59 Re : problème pour contenir des événements aléatoires dans un rectangle

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: problème pour contenir des événements aléatoires dans un rectangle



Ok, merci pour la précision Makio
Et si on ajoute une fonction du type :

void rect(Rectangle r){
rect(r.x, r.y, r.width, r.height);
}

on obtient ça :

import java.awt.Rectangle;

Rectangle r;

void setup() {
  size(200, 200);
  r = new Rectangle(50, 50, 100, 100);
}

void draw() {
  background(0);
  rect(r);//afficher notre Rectangle r
  println(r.contains(mouseX, mouseY));
}
void rect(Rectangle r){
rect(r.x, r.y, r.width, r.height);
}

Ce qui peut simplifier pas mal si tu as beaucoup de Rectangle

Hors ligne

 

#12 2012-09-01 17:48:53 Re : problème pour contenir des événements aléatoires dans un rectangle

mfm
membre
Date d'inscription: 2012-08-30
Messages: 37

Re: problème pour contenir des événements aléatoires dans un rectangle



Super ! Un grand merci à vous deux !

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024