Annonce

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


#16 2010-08-02 19:43:00 Re : Problème de boucle for

Ars Robota
membre
Date d'inscription: 2008-03-23
Messages: 191

Re: Problème de boucle for



Bon.
J'ai repris tout le sketch depuis le début en laissant tomber le côté "orienté objet" pour quelque chose de beaucoup plus accessible (pour moi surtout). Ca marche plutôt bien, sauf je n'obtiens que des changements trop rapides et brusques alors que je cherche à avoir des mouvements doux.

Quelqu'un pourrait-il m'aider, s'il vous plaît?

Merci beaucoup,
Ars Robota

int nbr=100;
float n=0.00;
float d=0.04;
float x, y;
float s, grayCol;
float xoff;

void setup() {
  size(400,400);
  smooth();
  frameRate(30);
}

void draw() {
  for(int j=0;j<50;j++) {
    background(255);
    n+=d;
    for(int i=0;i<nbr;i++) {
      x=noise(xoff+n)*width/2+width/4;
      y=noise(xoff-n)*height/2+height/4;
      s=random(1, 20);
      grayCol=noise(xoff)*128;
      xoff+=0.1;

      noStroke();
      fill(grayCol, grayCol);
      ellipse(x, y, s, s);

      float wh=s*1.5;
      noFill();
      stroke(grayCol, grayCol);
      ellipse(x, y, wh, wh);
    }
  }
}

Dernière modification par Ars Robota (2010-08-02 22:39:59)


myspace.com/arsrobota

Hors ligne

 

#17 2010-09-05 21:28:39 Re : Problème de boucle for

Ars Robota
membre
Date d'inscription: 2008-03-23
Messages: 191

Re: Problème de boucle for



Salut tout le monde,

J'ai réussi à me débrouiller pour obtenir ce que je voulais, même si les interpolations entre chaque position-clef sont trop linéaire... Il fallait juste ajouter une boucle supplémentaire en-dehors de la boucle for principale.

Voici le code, si ça peut en aider d'autres...

int nbr=50;
float n=0.00;
float d=0.01;
float[] y=new float[nbr];
float[] x=new float[nbr];
float[] s=new float[nbr];
float[] grayCol=new float[nbr];
float[] targetX=new float[100];
float[] targetY=new float[100];
float[] targetS=new float[nbr];
float[] targetCol=new float[nbr];
float xoff, yoff;
float[] ease=new float[nbr];
float easing=0.01;
int j=1;
float expo=2.0;

void setup() {
  size(400,400,P3D);
  frameRate(30);
  smooth();
}

void draw() {
  background(255);
  n+=d;
  j++;
  if(j==1) {
    for(int k=0;k<nbr;k++) {
      targetX[k]=noise(xoff)*width;
      targetY[k]=noise(yoff)*height;
      targetS[k]=random(1, 30);
      targetCol[k]=noise(xoff)*64;
      xoff+=0.8;
      yoff+=0.2;
      ease[k]=random(0.005,0.05);
    }
  }
  else if(j==30) {
    j=0;
  }

  for(int i=0;i<nbr;i++) {
    float dx=targetX[i]-x[i];
    float dy=targetY[i]-y[i];
    x[i]+=dx*ease[i];
    y[i]+=dy*ease[i];
    println(dx);

    float ds=targetS[i]-s[i];
    if(abs(ds)>1) {
      s[i]+=ds*ease[i];
    }
    float dCol=targetCol[i]-grayCol[i];
    if(abs(dCol)>1) {
      grayCol[i]+=dCol*ease[i];
    }

    noStroke();
    fill(grayCol[i], grayCol[i]);
    ellipse(x[i], y[i], s[i], s[i]);

    float wh=s[i]*1.5;
    noFill();
    stroke(grayCol[i], grayCol[i]);
    ellipse(x[i], y[i], wh, wh);
  }
}

Merci encore pour votre aide!


myspace.com/arsrobota

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024