Annonce

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


#1 2013-03-03 18:19:29 dessin qui s'affichent aléatoirement

nahkira
membre
Date d'inscription: 2010-09-13
Messages: 17

dessin qui s'affichent aléatoirement



Salut à tous

voila je souhaite réalisé des dessins qui s'affichent progressivement suivant un balayage simple et aléatoire.
Mon idée première est de faire un tableau à 2 dimensions , quand le système de balayage passe "au dessus" de la coordonnée du dessin, de dire a Processing de changer ce carré qui était blanc en noir (par ex)
Pour le moment j'en suis à l'étape ou j'ai mon tableau et le balayage, je cherche donc des solutions de ce type >
Comment écrire des variables qui seraient les coordonnées ( une variable pour x = 0, y = 1 ) par ex.
déclarer une autre variable pour le processus de balayage, et quand les 2 coïncident > affichage de la bonne couleur de carré.

Bon j'espère ne pas etre trop confu, je post mon code si mon explication n'est pas asse claire

merci pour vos idée

Hors ligne

 

#2 2013-03-04 13:22:28 Re : dessin qui s'affichent aléatoirement

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

Re: dessin qui s'affichent aléatoirement



tu peux commencer par utiliser un tableau en deux dimension, c'est le plus simple pour représenter une image.
Ensuite pour ta lecture , si tu veux un affichage progressif, il faut incrémenter image par image verticalement, et lire l'intégrale des données horizontale de la ligne

int[][] grille = {  {0, 1, 1, 0},
                     {1, 0, 0, 1},
                     {1, 0, 0, 1},
                     {0, 1, 1, 0}  };
int i=0;
void setup(){
  size(400,400);
  frameRate(2);
}
void draw(){
for(int j=0;j<4;j++){
if(grille[i][j]==0){
  fill(0);
  grille[i][j]=1;
}else{
  fill(255);
  grille[i][j]=0;
  
}
noStroke();
rect(j*100,i*100,100,100);
}
if(i<3){
  i++;
}else{
  i=0;
}
}

Dernière modification par cgiles (2013-03-04 18:49:15)

Hors ligne

 

#3 2013-03-04 21:34:02 Re : dessin qui s'affichent aléatoirement

nahkira
membre
Date d'inscription: 2010-09-13
Messages: 17

Re: dessin qui s'affichent aléatoirement



Merci pour la réponse

Voici le code de la ou j'en suis:

float a = 0;
float b = 0;
float rond01 = 0; // variable pour le balayage

void setup(){
size(200,200);
background(0);

int cols = width;
int rows = height;

// Declare 2D array
int[][] myArray = new int[75][75];

// Initialize 2D array values
for (int i = 0; i < 75; i = i +1) {
  for (int j = 0; j < 75; j = j + 1) {
    myArray[i][j] = int(0);
  }
}

// Draw points
for (int i = 0; i < 75; i = i +1) {
  for (int j = 0; j < 75; j = j + 1) {
    stroke(myArray[i][j]);
    fill(200);
    rect(i * 4 , j * 4, 5, 5);
  }
 }
 
}  // Close setup

void draw(){
  rond01();
  
}

void rond01(){ 
 stroke(200); 
 noFill();
 //rect(a, b, random(5), random(4));
 //stroke(200); 
 noFill();
 stroke(200); 
 ellipse(a, b, random(4), random(5)); 
 
 a = a + 3;
 if(a > width){
 a = 0;
 b = random(200);
 
 }
}

je souhaite que quand le balayage que j'appelle rond01 passe sur un carré qui correspond à une coordonnée
pertinente du dessin, que le carré qui était blanc au départ passe en noir (par ex.)

Je ne sais pas si avec le bout de code que tu m'a donné je pourrai aller vers le but fixé, mais bon je débute et j'avance à taton, et par essais successifs

Là je commence avec un carré de 75 px par 75 px ou l' on voit la grille, ainsi que le processus de balayage.
Dans le projet final je veut ensuite passer à des sketchs plus grand (pour augmenter la finesse du dessin à reproduire) et aussi faire en sorte de ne plus voir ni la grille, ni le pocessus de balayage

Hors ligne

 

#4 2013-03-04 22:28:55 Re : dessin qui s'affichent aléatoirement

BlackTree
membre
Date d'inscription: 2012-11-13
Messages: 25
Site web

Re: dessin qui s'affichent aléatoirement



J'ai pas bien compris se que tu faisais avec ton ellipse hmm, mais voilà le code où tout se change au bon endroit. Je te laisse faire la suite.

float a = 0;
float b = 0;
float rond01 = 0; // variable pour le balayage

void setup(){
size(200,200);
background(0);

int cols = width;
int rows = height;

// Declare 2D array
int[][] myArray = new int[75][75];

// Initialize 2D array values
for (int i = 0; i < 75; i = i +1) {
  for (int j = 0; j < 75; j = j + 1) {
    myArray[i][j] = int(0);
  }
}

// Draw points
for (int i = 0; i < 75; i = i +1) {
  for (int j = 0; j < 75; j = j + 1) {
    stroke(myArray[i][j]);
    fill(200);
    rect(i * 4 , j * 4, 5, 5);
  }
 }
 
}  // Close setup

void draw(){
  rond01();
  
}

void rond01(){ 
 stroke(200); 
 fill(0);
 rect(a*4, b*4, 4, 4);
 stroke(200); 
 noFill();
 a = a + 1;
 if(a > 50){
   a = 0; 
   b = int(random(0,50));
 }
 
}

Et pour une coloration aléatoire (je n'ai ici pas mis de stroke blanc pour les carrés noirs dans un souci esthétique, mais libre à toi d'en mettre un très facilement dans la condition que j'ai mise). Si tu veux faire de "vrais" dessins, il va falloir que tu fasses un tableau en deux dimension ou chaque coordonné correspond à une valeur "noirOuBlanc" égale à 0 ou 1. Bref :

float a = 0;
float b = 0;
float rond01 = 0; // variable pour le balayage
int noirOuBlanc;
void setup(){
size(200,200);
background(0);

int cols = width;
int rows = height;

// Declare 2D array
int[][] myArray = new int[50][50];

// Initialize 2D array values
for (int i = 0; i < 50; i = i +1) {
  for (int j = 0; j < 50; j = j + 1) {
    myArray[i][j] = int(0);
  }
}

// Draw points
for (int i = 0; i < 50; i = i +1) {
  for (int j = 0; j < 50; j = j + 1) {
    stroke(myArray[i][j]);
    fill(200);
    rect(i * 4 , j * 4, 5, 5);
  }
 }
 
}  // Close setup

void draw(){
  rond01();
  
}

void rond01(){ 
 stroke(0); 
 noirOuBlanc = int(random(0,2));
 if(noirOuBlanc==0){
   fill(0);
 }else{
   fill(225);
 }
 rect(a*4, b*4, 4, 4);
 stroke(200); 
 noFill();
 a = a + 1;
 if(a > 50){
   a = 0; 
   b = int(random(0,50));
 }
}

Je sais pas si c'est une très bonne idée de te donner le code tout fait si tu veux apprendre, mais ton projet est sympa, donc j'ai craqué... Essaye de bien le méditer, voir même de le refaire tout seul smile

Au passage, un tableau [50][50] est suffisant (200/4=50 tongue)

Dernière modification par BlackTree (2013-03-04 23:11:18)

Hors ligne

 

#5 2013-03-04 23:29:34 Re : dessin qui s'affichent aléatoirement

nahkira
membre
Date d'inscription: 2010-09-13
Messages: 17

Re: dessin qui s'affichent aléatoirement



Merci pour ton aide

Je dois etre effectivement pas très loin du but.

A partir de là écrire le tableau a 2 dimensions pour faire ce dessin
mettre en place la condition.

quand j'aurais des résultat je les posterais

merci en tt cas

Hors ligne

 

#6 2013-03-04 23:44:59 Re : dessin qui s'affichent aléatoirement

BlackTree
membre
Date d'inscription: 2012-11-13
Messages: 25
Site web

Re: dessin qui s'affichent aléatoirement



Pour pousser le concept plus loin : chaque ligne ne se change qu'une fois par dessin (pas de doublons), de cette manière tu pourras même faire faire ce que tu veux au programme quand le dessin sera terminé. (C'est faisable avec un tableau uni-dimensionnel et un peu d'astuce pour le random)

Hors ligne

 

#7 2013-03-05 00:39:40 Re : dessin qui s'affichent aléatoirement

nahkira
membre
Date d'inscription: 2010-09-13
Messages: 17

Re: dessin qui s'affichent aléatoirement



Tu veut dire que chaque ligne ne passerai qu'une seule fois (dans la distribution verticale) et faire faire
autre chose au programme une fois le dessin terminé

- Soit retourner vers une forme d'effacement, puis repartir vers un autre dessin ?

Bon je vais avancer doucement, mais il dois y avoir moyen de faire des trucs sympa sur ces principe simple :

Uns chute de pixels qui tombent, et certains "restent" pour former le dessin
Ou déclenché par un évenement

Bon va falloir s'y mettre...

merci

Hors ligne

 

#8 2013-03-05 01:37:30 Re : dessin qui s'affichent aléatoirement

BlackTree
membre
Date d'inscription: 2012-11-13
Messages: 25
Site web

Re: dessin qui s'affichent aléatoirement



T'as tout compris smile
Je pensais aussi à des couleurs, aussi simple qu'en noir et blanc, mais parait plus travaillé.

Hors ligne

 

#9 2013-03-12 22:35:33 Re : dessin qui s'affichent aléatoirement

BlackTree
membre
Date d'inscription: 2012-11-13
Messages: 25
Site web

Re: dessin qui s'affichent aléatoirement



Pardon pour le gros up, mais après avoir codé ça je me devais de te partager mon idée.





lien vers la page de la vidéo sur youtube



Voilà, le principe serait de reprendre ton concept d'afficher un dessin en pixel art, mais ici en 3d smile (un peu à la picross 3d), pas grand chose ne change, si se n'est le fait d'utiliser un tableau en 3 dimensions et les fonction pushMatrix() et popMatrix() pour ne pas avoir de problèmes avec les translate(), obligatoires en P3D.

Comme j'ai cru comprendre que tu débutais plus que moi, je te file mon code source pour snake, tu pourras t'en servir comme base.

Oui c'est un peu codé avec les pieds et y'a pas mal d'optimisations possibles, mais passons...
Je vais tenter des trucs de mon côté, en espérant t'inspirer.

Hors ligne

 

#10 2013-03-21 00:21:16 Re : dessin qui s'affichent aléatoirement

nahkira
membre
Date d'inscription: 2010-09-13
Messages: 17

Re: dessin qui s'affichent aléatoirement



Superbe

Tu avance plus vite que ton ombre, de mon coté j'ai pas bien avancé, a cause du Taf.
j'ai que peu de temps le soir. Sinon j'ai pas encore trouvé comment "afficher" mon dessin.

En gros j'essais de dessiner comme ça :




{0,0,0,1,0,0,0,1,0,0,0},
{0,0,0,0,1,0,1,0,0,0,0},
{0,0,0,0,0,1,0,0,0,0,0};

}

Et ensuite que le principe de balayage aléatoire découvre ou sont les "1" et ainsi révéler le dessin

Ton systeme en 3D est vraiment bien et peu deboucher sur un tas d'autre manière de faire et/ou amener des
apparitions de dessin
je vais regarder ton code de près et essayer de comprendre des principes de fonctionnement

Bravo

Hors ligne

 

#11 2013-03-21 18:21:21 Re : dessin qui s'affichent aléatoirement

BlackTree
membre
Date d'inscription: 2012-11-13
Messages: 25
Site web

Re: dessin qui s'affichent aléatoirement



Etant lycéen j'ai la chance d'avoir du temps libre pour apprendre, je suis pas si méritant...
J'essaye à présent d'explorer les dimensions suppérieures. Je sais pas si c'est utile sur ton projet des dessins en 4d (d'autant que pour l'instant je la représente a peu près comme dans miegakure (http://marctenbosch.com/miegakure/)), mais des que j'aurais fini mon snake 4d sur lequel j'ai commencé à bosser je vois s'il y'a pas moyen d'avoir des choses comme ça : http://mrl.nyu.edu/~perlin/demox/Hyper.html , qui pourrait rendre bien si on y rajoute un quadrillage 4d, pour du pixel art 4d.
Si j'ai le temps, et surtout si j'arrive à garder cette envie.

Edit : Ce fut plus rapide que prévu. Mon snake en quatre dimensions est terminé. Il ne se déroule pas vraiment dans un tesseract car les liens dans la quatrième dimension sont (beaucoup) plus court qu'une arrête du cube. Enfin bref.

Dernière modification par BlackTree (2013-03-21 19:51:31)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024