dataviz_tp2.pde 2,76 ko
Newer Older
Hugo Landrin's avatar
Hugo Landrin a validé
PImage carte;
Table table;
Table tableDoubles;
int lignes;

PImage iconKorok;
PImage iconKorokDouble;

int baseKorokHeight = 7 * 4;
int baseKorokWidth = 7 * 4;
int baseKorokDoubleWidth = 9 * 4;
int baseKorokDoubleHeight = 7 * 4;

PFont font;

Hugo Landrin's avatar
Hugo Landrin a validé
Integrator[] interpKorok;
Integrator[] interpKorokDouble;

Hugo Landrin's avatar
Hugo Landrin a validé

void setup() {
    size(1200, 1000);
    frameRate(30);

    carte = loadImage("totk_map.jpg");
    carte.resize(1200, 1000);
    
    iconKorok = loadImage("korogu_simple.png");
    iconKorokDouble = loadImage("korogu_double.png");
    iconKorokDouble.resize(9 * 4, 7 * 4);
    
    table = loadTable("korogus.csv");
    tableDoubles = loadTable("korogus_duos.csv");
    
    font = loadFont("Rockwell-16.vlw");
    textFont(font);
    textAlign(CENTER);
Hugo Landrin's avatar
Hugo Landrin a validé

    interpKorok = new Integrator[table.getRowCount()];
    for(int i = 0; i < table.getRowCount(); i++) {
      interpKorok[i] = new Integrator(500);
    }
    interpKorokDouble = new Integrator[tableDoubles.getRowCount()];
    for(int i = 0; i < tableDoubles.getRowCount(); i++) {
      interpKorokDouble[i] = new Integrator(500);
Hugo Landrin's avatar
Hugo Landrin a validé
    }
}

Hugo Landrin's avatar
Hugo Landrin a validé
void draw() {  
Hugo Landrin's avatar
Hugo Landrin a validé
    background(255);
    image(carte, 0, 0);

    smooth();
    fill(192, 0, 0);
    noStroke();

    image(carte, 0, 0);
Hugo Landrin's avatar
Hugo Landrin a validé
  
    for(int i = 0; i < table.getRowCount(); i++) {
        TableRow row = table.getRow(i);
        interpKorok[i].update();
        drawIcon(row.getFloat(0), row.getFloat(2), interpKorok[i].value / 800, iconKorok, baseKorokWidth, baseKorokHeight);
Hugo Landrin's avatar
Hugo Landrin a validé
    }
Hugo Landrin's avatar
Hugo Landrin a validé
  
    for(int i = 0; i < tableDoubles.getRowCount(); i++) {
        TableRow row = tableDoubles.getRow(i);
        interpKorokDouble[i].update();
        drawIcon(row.getFloat(0), row.getFloat(2), interpKorokDouble[i].value / 800, iconKorokDouble, baseKorokDoubleWidth, baseKorokDoubleHeight);
Hugo Landrin's avatar
Hugo Landrin a validé
    }
}

Hugo Landrin's avatar
Hugo Landrin a validé
void drawIcon(float x1, float y1, float size, PImage icon, float baseWidth, float baseHeight) {
Hugo Landrin's avatar
Hugo Landrin a validé
    float iconWidth = baseWidth;
    float iconHeight = baseHeight;
Hugo Landrin's avatar
Hugo Landrin a validé
    float x = (x1 + 6000) / 10;
    float y = (y1 + 5000) / 10;
Hugo Landrin's avatar
Hugo Landrin a validé
    
Hugo Landrin's avatar
Hugo Landrin a validé
      iconHeight = iconHeight * size;
      iconWidth = iconWidth * size;
Hugo Landrin's avatar
Hugo Landrin a validé
    if(mouseX > x - iconWidth / 2 &&
       mouseX < x + iconWidth / 2 &&
       mouseY > y - iconHeight/ 2 &&
       mouseY < y + iconHeight/ 2
    ) {
      iconHeight = iconHeight * 1.5;
      iconWidth = iconWidth * 1.5;
      fill(255);
Hugo Landrin's avatar
Hugo Landrin a validé
      text((int)x1 + ", " + (int)y1, x, y - iconHeight / 2 - 10);
Hugo Landrin's avatar
Hugo Landrin a validé
    }
    
    x = x - iconWidth / 2;
    y = y - iconHeight / 2;
    image(icon, x, y, iconWidth, iconHeight);
}
Hugo Landrin's avatar
Hugo Landrin a validé

void keyPressed() {
    if(key == ' ') majDonnees();
}

void majDonnees() {
    for(int i = 0; i < table.getRowCount(); i++) {
        interpKorok[i].target(random(1, 1000));
    }
    for(int i = 0; i < tableDoubles.getRowCount(); i++) {
        interpKorokDouble[i].target(random(1, 1000));
    }
}