Annonce

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


#1 2009-12-20 19:17:32 Poils

Staross
membre
Date d'inscription: 2008-04-03
Messages: 322

Poils



Yep, un petit script pour dessiner des poils, rien de très compliqué :

http://codelab.fr/up/Hairs-3.png

http://codelab.fr/up/Hairs-2.png

http://codelab.fr/up/Hairs-1.png

import processing.opengl.*; 

float pi = 3.1415;
float density = 0.1; //densitity of hairs

int w = 600; //size of the window

int N = int(density*w); 
int strW = 2;

float x[] = new float[N]; //positions
float y[] = new float[N];
float dx[][] = new float[N][N]; //speed
float dy[][] = new float[N][N];
float l[][] = new float[N][N]; //length
float R[][] = new float[N][N]; //color
float G[][] = new float[N][N];
float B[][] = new float[N][N];


void setup(){ 

  size(w,w); 
  //smooth(); 
  noLoop(); 

  for (int i=0;i<N;i++)
  {
    x[i] = float(w*i/N) + random(-1,1); 
    y[i] = float(w*i/N) + random(-1,1);
  }

  for(int i=0;i<N; i++)
  {
    for(int j=0;j<N; j++)
    {

      //normalized coordinates
      float a; 
      a = float(i)/float(N)-0.5;
      float b; 
      b = float(j)/float(N)-0.5;

      //polar coordinates
      float r = sqrt( pow(a,2) + pow(b,2) );
      float th = atan(b/a);

      dx[i][j] = 1*pow(4.3*th,1)+2*sin(5*r)+a*b*2;
      dy[i][j] = -cos(10*r)-a+b   ;

      l[i][j] = 0.8*(1.3-0.8*cos(th-2)/(pow(4*r+2,2)+0.6))*r;
      
      // Colors
      R[i][j] = 50;//250*(a+0.5);
      G[i][j] = 50;//100*cos(2*th);
      B[i][j] = 50;//200;
      
      //R[i][j] = 250*(a+0.5)*atan(a);
      //G[i][j] = th*100*(sin(6*r)+1);
      //B[i][j] = 200*(cos(10*r)+1);

    }
  }

} 

void draw(){ 
  fill(0);

  background(255);
  stroke(0,0,0); 
  //float l=10;

  for(int i=0;i<N; i++)
  {
    for(int j=0;j<N; j++)
    {
      draw_line(x[i]+ random(-5,5),y[j]+ random(-5,5),dx[i][j],dy[i][j],l[i][j],R[i][j],G[i][j],B[i][j],25);

    }
  }

  saveFrame("line-1.tif");

} 

void draw_line(float a,float b, float da, float db, float l, float R, float G, float B, int n)
{

  //float l=2;

  float c; 
  float d;
  c = a+l*(da + 2*random(-1,1));
  d = b+l*(db + 2*random(-1,1));

  stroke( 10*(5-n),10*(5-n),10*(5-n) );
  
  stroke(R,G,B);
  
  strokeWeight(strW);
  line(a,b,c,d);

  if( n != 0 ) { 
    float e = 1.1;
    draw_line(c,d,da,db,l,e*R,e*G,e*B, n-1); 
  }


}

Hors ligne

 

#2 2009-12-21 05:31:51 Re : Poils

onze
membre
Lieu: Victoria BC
Date d'inscription: 2008-11-29
Messages: 30

Re: Poils



a premiere vue j'aurais pense a de la limaille de fer sous un champ magnetique, comme ce qu'on voit en cours, mais c'est vrai que ca ressemble d'avantage a... des poils XD

Hors ligne

 

#3 2009-12-21 12:41:20 Re : Poils

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Poils



Chouettes images! Ça donne envie de jouer avec... Voila une version pour faire des hiéroglyphes :

http://codelab.fr/up/line-2531.png

Code (processing) :

import processing.opengl.*; 

float pi = 3.1415;
float density = 0.04; //densitity of hairs

int w = 600; //size of the window

int N = int(density*w); 
int strW = 3;

float x[] = new float[N]; //positions
float y[] = new float[N];
float dx[][] = new float[N][N]; //speed
float dy[][] = new float[N][N];
float l[][] = new float[N][N]; //length
float R[][] = new float[N][N]; //color
float G[][] = new float[N][N];
float B[][] = new float[N][N];


void setup(){ 

  size(w,w); 
  smooth(); 
  //noLoop(); 

  for (int i=0;i<N;i++)
  {
    x[i] = float(w*i/N)+12; 
    y[i] = float(w*i/N)+12;
  }

  for(int i=0;i<N; i++)
  {
    for(int j=0;j<N; j++)
    {

      //normalized coordinates
      float a; 
      a = float(i)/float(N)-0.5;
      float b; 
      b = float(j)/float(N)-0.5;

      //polar coordinates
      float r = sqrt( pow(a,2) + pow(b,2) );
      float th = atan(b/a);

      //dx[i][j] = (1*pow(4.3*th,1)+2*sin(5*r)+a*b*2);
      //dy[i][j] = (-cos(10*r)-a+b)   ;
      
      dx[i][j] =  cos(r);
      dy[i][j] =  sin(r);

      //l[i][j] = 1.8*(1.3-0.8*cos(th-2)/(pow(4*r+2,2)+0.6))*r;
      
      l[i][j] = 6;
      
      // Colors
      R[i][j] = 0;//250*(a+0.5);
      G[i][j] = 0;//100*cos(2*th);
      B[i][j] = 0;//200;
      
      //R[i][j] = 250*(a+0.5)*atan(a);
      //G[i][j] = th*100*(sin(6*r)+1);
      //B[i][j] = 200*(cos(10*r)+1);

    }
  }

} 

void draw(){ 
  fill(0);

  background(255);
  stroke(0,0,0); 
  //float l=10;
  
  for (int i=0;i<N;i++)
  {
    //x[i] = w*i/(((mouseX / 200) *N)+.001)+12; 
    //y[i] = w*i/(((mouseY / 200) *N)+.001)+12;
    x[i] = float(w*i/N)+12; 
    y[i] = float(w*i/N)+12;
    for(int j=0;j<N; j++) {
      l[i][j] = mouseX / 50;
    }
  }

  for(int i=0;i<N; i++)
  {
    for(int j=0;j<N; j++)
    {
      int nb = round(mouseY / 20);
      draw_line(x[i],y[j],dx[i][j],dy[i][j],l[i][j],R[i][j],G[i][j],B[i][j],nb);

    }
  }

  // saveFrame("line-1.tif");
  //noLoop();
} 

void draw_line(float a,float b, float da, float db, float l, float R, float G, float B, int n)
{

  //float l=2;

  float c; 
  float d;
  //c = a+l*(da + 2*random(-.1,.1));
  //d = b+l*(db + 2*random(-.1,.1));
  
  float y;
  float z;
  
  z = random(-1,1);
  if (z > 0) y = 1;
  else y = -1;
  c = a+l*y;
  
  
  z = random(-1,1);
  if (z > 0) y = 1;
  else y = -1;
  d = b+l*y;
  
  //stroke( 10*(5-n),10*(5-n),10*(5-n) );
  
  stroke(R,G,B);
  
  strokeWeight(strW);
  line(a,b,c,d);

  if( n != 0 ) { 
    float e = 5.5;
    draw_line(c,d,da,db,l,R,G,B, n-1); 
  }

}

void mousePressed() {
  saveFrame("line-" + millis() + ".tif");
  loop();
}

Hors ligne

 

#4 2009-12-21 20:36:35 Re : Poils

jkp
Administrator
Date d'inscription: 2006-01-06
Messages: 354

Re: Poils



Staross a écrit:

Yep, un petit script pour dessiner des poils, rien de très compliqué :

http://codelab.fr/up/Hairs-3.png

http://codelab.fr/up/Hairs-2.png

http://codelab.fr/up/Hairs-1.png

tu vas le mettre dans le fanzine tous a poil??!!!

Hors ligne

 

#5 2009-12-21 21:22:54 Re : Poils

Staross
membre
Date d'inscription: 2008-04-03
Messages: 322

Re: Poils



Je les ai filés à djemija ouais, on verra si ça y est smile

Sinon c'est vrai que ça ressemble à de la limaille de fer, j'ai pas exactement trouvé la bonne fonction pour faire un trou du cul (j'ai essayé pourtant!).

Pas mal les hiéroglyphes, ça pourrait servir de texture...

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024