/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.8$chnEwIdkZ/rev.290
*
* authors:
* David Merino
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
// Definim les variables globals
int i; // Número d'iteracions de la funció draw()
float recorregut;
PVector iPos; // Posició inicial del ratolí (quan es clica)
PGraphics pg; // Creem un context gràfic nou.
// Definim les variables d'execució
void setup(){
// Definim la finestra del programa, la freqüència d'actualització i
// el color de fons.
size(600,600);
frameRate(70);
background(0);
// Inicialitzem les variables globals
i=0;
recorregut=0;
pg = createGraphics(600, 600);
iPos = new PVector(0,0);
}
void draw()
{
// Netegem la pantalla
background(0);
if (i>0)
{
// Dibuixem la trajectòria al context gràfic pg
// Així la guardarem per a les properes iteracions
pg.beginDraw(); // Comencem a dibuixar a pg
pg.stroke(255);
// Afegim la nova línia al dibuix de la trajectòria
pg.line(pmouseX, pmouseY, mouseX, mouseY);
pg.endDraw(); // Acabem el dibuix de la nova línia
// Imprimim a la pantalla el dibuix de la trajectòria
image(pg, 0, 0);
// Calculem el recorregut
recorregut = recorregut + sqrt((mouseX-pmouseX)*(mouseX-pmouseX)+
(mouseY-pmouseY)*(mouseY-pmouseY));
// Dibuixem el vector desplaçament
// Aquest volem esborrar-lo cada vegada que fem una iteració
// per això no utilitzem el context gràfic "pg"
stroke(255, 0, 0);
line(iPos.x,iPos.y, mouseX, mouseY);
i++;
}
// Escrivim els resultats:
// Dibuixem el background de la caixa de text.
fill(100, 100, 100);
noStroke();
rect(15, 480, 300, 60);
// Escrivim la informació del recorregut
String str = "Recorregut (pixels): " + recorregut ;
fill(255, 255, 255);
text( str, 20, 500);
// Escrivim la informació del desplaçament
int aux1 = mouseX-iPos.x;
int aux2 = mouseY-iPos.y;
str = "Vector desplaçament (pixels): (" + aux1 + "," + aux2 + ")";
fill(0,0,0);
text( str, 20, 515);
str = "Mòdul vector desplaçament (pixels): " +
sqrt((mouseX-iPos.x)*(mouseX-iPos.x) + (mouseY-iPos.y)*(mouseY-iPos.y));
fill(0,0,0);
text( str, 20, 530);
}
void mouseClicked()
{
// Aquesta funció es crida quan es clicka el ratolí
background(0); // Esborrem la pantalla
// Esborrem pg
pg.beginDraw(); // Comencem a dibuixar a pg
pg.background(0);
pg.endDraw(); // Acabem el dibuix de la nova línia
// Imprimim a la pantalla el dibuix de la trajectòria
image(pg, 0, 0);
i=1; // Inicialitzem el contador i a 1
// Inicialitzem la posició inicial del desplaçament
iPos.x = mouseX;
iPos.y = mouseY;
recorregut = 0;
}