Dans le système de coordonnées par défaut le point d’origine (0,0) est situé en haut à gauche. Il est toutefois possible de modifier l’emplacement de ce point d’origine. Dans l’exemple ci-dessous le point de coordonnées (0,0) est déplacé à l’aide de la fonction translate(); La fonction translate(); doit être encadrée par push(); et pop();
push() et pop() définissent la zone sur laquelle s’applique translate();
function setup() {
createCanvas(500, 500);
}
function draw() {
background(255);
rect(0, 0, 55, 55);
push();
translate(30, 20);
rect(0, 0, 55, 55);
translate(14, 14);
rect(0, 0, 55, 55);
ellipse(150,50, 50,50); // translate s'applique après push();
pop();
ellipse(150,50,50,50); // translate ne s'applique plus après pop();
}
function setup() {
createCanvas(500, 500);
}
function draw() {
background(255);
push();
translate(mouseX, mouseY);
ellipse(0, 0, 55, 55);
pop();
}
La fonction rotate() permet la rotation des coordonnées à partir du point d’origine.
La fonction scale(); permet de zoomer.
function setup() {
createCanvas(500, 500);
}
function draw() {
background(255);
line(mouseX-50, mouseY-50, mouseX+50, mouseY+50);
line(mouseX+50, mouseY-50, mouseX-50, mouseY+50);
}
Est équivalent à :
function setup() {
createCanvas(500, 500);
}
function draw() {
background(255);
push();
translate(mouseX, mouseY);
line(-50, -50, 50, 50);
line(50, -50, -50, 50);
pop();
}
rotate(); s’exprime en radians ce qui n’est pas habituel (pour moi !) Pour pallier ce petit problème il est possible d’écrire :
rotate(radians(45)); ce qui équivaut à une rotation de 45° au lieu de rotate(PI/4);
function setup() {
createCanvas(500, 500);
}
function draw() {
background(255);
push();
translate(mouseX, mouseY);
rotate(radians(45));
line(-50, -50, 50, 50);
line(50, -50, -50, 50);
pop();
}
Il est possible de remplacer la valeur par une variable.
var angle = 0;
function setup() {
createCanvas(500, 500);
}
function draw() {
background(255);
push();
translate(mouseX, mouseY);
rotate(radians(angle));
line(-50, -50, 50, 50);
line(50, -50, -50, 50);
angle++;
pop();
}
L’ordre dans lequel les fonctions sont utilisés est important :
var angle = 0.0;
function setup() {
createCanvas(800, 600);
background(204);
}
function draw() {
push();
translate(mouseX, mouseY);
rotate(angle);
rect(-15, -15, 30, 30);
angle += 0.1;
pop();
}
var angle = 0.0;
function setup() {
createCanvas(800, 600);
background(204);
}
function draw() {
push();
rotate(angle);
translate(mouseX, mouseY);
rect(-15, -15, 30, 30);
angle += 0.1;
pop();
}