Приклади. Анімаційне малювання з трансформаціями

Квадрат, що обертається та переміщується за вказівником миші

float r = 0;

void setup() {

  size(400, 400); 

  background(255,255,255);

  rectMode(CENTER);  

  fill(255);

}

void draw() {

  rect(width/2, height/2, width, height); 

  translate(mouseX, mouseY);

  rotate(r);

  rect(0, 0, 100, 100);

  r = r + 0.05;

}



Обертання кількох об'єктів

float r = 0;

void setup() {

  size(400, 400);

  background(255);

  noStroke();

  fill(0);

  rectMode(CENTER);

}

void draw() {

  background(255);


  pushMatrix(); 

  translate(100, 100);

  rotate(r);

  rect(0, 0, 80, 80);

  popMatrix();


  pushMatrix(); 

  translate(300, 100);

  rotate(r*0.5);

  rect(0, 0, 80, 80);

  popMatrix();


  pushMatrix(); 

  translate(100, 300);

  rotate(r*2);

  rect(0, 0, 80, 80);

  popMatrix();


  pushMatrix();

  translate(300, 300);

  rotate(r*4);

  rect(0, 0, 80, 80);

  popMatrix();


  r = r + 0.02;

}

 


Обертання квадратів

float time=0;

void setup() {

  size(512,512);

  frameRate(25);

}

void draw(){

  background(255);

  translate(width*0.5, height*0.5);   //переміщує малювання у центр екрану

  noFill();

  time=time+0.01;

  for (int i=0; i<20; i++) {

    rotate(time);

    rect(i,i,i*5,i*5);  //малювання 20 квадратів із щораз більшою стороною у координатах i,i

  }

}

 


Круги різних радіусів

float r = 0;

void setup() {

  size(500,500);

  background(10);

}

void draw() {

  translate(width/2, height/2); // переміщення малювання у центр полотна

  fill(255);

  rotate(r); //поворот на r радіан

  float circle_size = random(5, 15); //випадковий вибір радіусу кола

  ellipse(100 + r, 10, circle_size, circle_size); //коло в координатах 100+r, 10 (відступ постійно збільшується разом з r)

  r = r + 0.2; // збільшення кута повороту

}



Остання зміна: субота 9 червня 2018 3:07