> show canvas only <


/* 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;
}