D. Pulzy a šumy

Úloha 1

Vytvorte pomocou sin() a map() jednoduchý pulzujúci štvorec:

Riešenie
float f = 0.03;

void setup()
{
  size(400,400);  
}

void draw()
{
  background(0);
  
  // Spomalime framecount nizkou frekvenciou f
  float t = frameCount * f; 
  
  // Velkost stvorca mapujeme zo sinusu na 0..300
  float d = map(sin(t), -1, 1, 0, 300);
  
  square(0,0,d);
}

Úloha 2

Upravte skeč tak, aby štvorec pulzoval okolo stredu

Riešenie
float f = 0.03;

void setup()
{
  size(400,400);  
}

void draw()
{
  background(0);
  
  // Spomalime framecount nizkou frekvenciou f
  float t = frameCount * f; 
  
  // Velkost stvorca mapujeme zo sinusu na 0..300
  float d = map(sin(t), -1, 1, 0, 300);
  
  square(width/2 - d/2, height/2 - d/2, d);
}

Úloha 3

Vyrobte takých štvorčekov vedľa seba n.

Riešenie
float f = 0.03;
int n = 20;

void setup()
{
  size(400,400);  
}

void draw()
{
  background(0);
  
  // Spomalime framecount nizkou frekvenciou f
  float t = frameCount * f; 

  // Velkost jedneho stvorceka
  float vs = width/n;
  
  for (int i = 0; i < n; i++)
  {
   // Velkost stvorca mapujeme zo sinusu na 0..vs
   float d = map(sin(t), -1, 1, 0, vs);
    
    square(vs*i, height/2 - vs/2, d); 
  }
}

Úloha 4

Urobte si náčrt a vypočítajte, aké majú byť súradnice štvorčekov, aby pulzovali okolo svojich stredov:

Riešenie
float f = 0.03;
int n = 20;

void setup()
{
  size(400,400);  
}

void draw()
{
  background(0);
  
  // Spomalime framecount nizkou frekvenciou f
  float t = frameCount * f; 

  // Velkost jedneho stvorceka
  float vs = width/n;
  
  for (int i = 0; i < n; i++)
  {
   // Velkost stvorca mapujeme zo sinusu na 0..vs
   float d = map(sin(t), -1, 1, 0, vs);
    
    square(vs*i + vs/2 - d/2, height/2 - d/2, d); 
  }
}

Úloha 5

Vytvorte v programe pole float hodnôt s názvom posuny. Toto pole má veľkosť n a vyplňte náhodnými hodnotami z rozsahu 0 až 2*PI. Bude predstavovať fázové posuny pre jednotlivé štvorčeky.

Upravte skeč tak, aby i-ty štvorček bol vo svojom pulzovaní fázovo posunutý o hodnotu posuny[i].

Riešenie
float f = 0.03;
int n = 20;
float posuny[];

void setup()
{
  size(400,400);
  posuny = new float[n];
  for (int i = 0; i < n; i++)
  {
    posuny[i] = random(TWO_PI);
  }
}

void draw()
{
  background(0);
  
  // Spomalime framecount nizkou frekvenciou f
  float t = frameCount * f; 

  // Velkost jedneho stvorceka
  float vs = width/n;
  
  for (int i = 0; i < n; i++)
  {
   // Velkost stvorca mapujeme zo sinusu na 0..vs
   float d = map(sin(t + posuny[i]), -1, 1, 0, vs);
    
    square(vs*i + vs/2 - d/2, height/2 - d/2, d); 
  }
}

Úloha 6

Úloha 7

Úloha 8

Úloha 9

Úloha 10

Last updated