De curven met raaklijnen, anker- en controlepunten.

De curven met raaklijnen, anker- en controlepunten.

 

 

 

 

 

Bezier Quadratic animatie, 8 objecten in een vierkant.                        terug naar de inleiding
 Met de "s" toets stoppen de bewegingen met iedere andere toets starten de bewegingen weer.

                                                                                  de animatie in fullScreen

De schets maakt gebruik van de p5.js class "BezierQuadr"  zie  curven classes   en de superclass ¨Curven¨

De ankerpunten van de objecten bevinden zich bij het starten van de animatie in het x,y punt.
De ankerpunten van objecten 1 t/m 4 bewegen zich diagonaal naar buiten, en die van 5 t/m 8 bewegen zich diagonaal naar binnen.

De (gele) controlepunten van objecten 1 t/m 4 staan op 7*n vanaf het x,y punt, en die van 5 t/m 8 staan op 15*n vanaf het x,y punt.

Zie ook de Bezier Quadratic curve constructor creator

 

let object = [];
function setup() {
  buttonR = createButton('reset');
  buttonR.position(20,30);buttonR.style('width','70px');
  buttonR.mouseClicked(buttonRAction);
  buttonD = createButton('downloaden');
  buttonD.position(20,60);buttonD.style('width','110px');
  buttonD.mouseClicked(buttonDAction);
createCanvas(windowWidth, windowHeight, WEBGL);
let x = 0; let y = 0; let n = height/30;
//  ankerpunten a1 en a2 en controlepunt c1
object[0] = new BezierQuadr(x,y, x,y, x, y-7*n, color(235, 17, 17,  170));
object[1] = new BezierQuadr(x,y, x,y, x, y+7*n, color(0, 250, 17,   170));
object[2] = new BezierQuadr(x,y, x,y, x-7*n, y, color(0, 17, 255,   170));
object[3] = new BezierQuadr(x,y, x,y, x+7*n, y, color(235, 255, 17, 170));
object[4] = new BezierQuadr(x,y, x,y, x, y-15*n,color(0, 250, 17,   170));
object[5] = new BezierQuadr(x,y, x,y, x, y+15*n,color(235, 17, 17,  170));
object[6] = new BezierQuadr(x,y, x,y, x-15*n, y,color(235, 250, 17, 170));
object[7] = new BezierQuadr(x,y, x,y, x+15*n, y,color(0, 0, 255,    170));
}
 
function draw() {
  clear()
  background('rgba(255,255,255, 0)');
  strokeWeight(2);
  for (let i = 0; i<8; i++) {object[i].display()}
 
  if (key == 's' || key == 'S') {  }
  else {
  object[0].xya1LiBo(); object[0].xya2ReBo();
  object[1].xya1LiOn(); object[1].xya2ReOn();
  object[2].xya1LiBo(); object[2].xya2LiOn();
  object[3].xya1ReBo(); object[3].xya2ReOn();
  object[4].xya2ReOn(); object[4].xya1LiOn();
  object[5].xya1ReBo(); object[5].xya2LiBo();
  object[6].xya2ReOn(); object[6].xya1ReBo();
  object[7].xya1LiOn(); object[7].xya2LiBo();
  }
}
function windowResized() {
  resizeCanvas(windowWidth, windowHeight);
}
function buttonRAction(){setup();}
function buttonDAction(){save('bezier_quadr_vierkant.png');}