// Programa de visualizacion que se corre con el software Processing https://processing.org // El programa consiste en un loop sin fin: // lee el archivo config.dat con las posiciones de los atomos que grafica como circulos // lee el archivo time.dat con el valor del reloj // Directorio de donde se lee todo. Puede ser un path absoluto o uno relativo. En este caso es el directorio previo //String data_dir = "/Volumes/Home/rsoto/Research/"; String data_dir = ".."; // Constantes globales. float L = 40.0; // Largo de la caja a graficar float Diam = 1.0;// Diametro de las particulas float u2px; // Conversion de valores L-J a pixeles float dpix; // Diametro de las particulas en pixeles int W,H; // Ancho y alto en pixeles de la caja // Rutina inicial, se ejecuta una vez al inicio del programa. Siempre se debe llamar setup() void setup() { // Se crea la ventana con fondo blanco size(600,600); background(255); // Tasa de refresco de la pantalla y optimizaciones generales frameRate(5); // 5 cuadros por segundo noStroke(); // No dibuja el borde de la imagen smooth(); // makes particles look better, but takes longer to render // Se calculas las conversiones u2px=width/L; dpix=Diam*u2px; } // Rutina que se ejecuta en lopp. Siempre se debe llamar draw() void draw() { // Se llene los archivos. Primero se escribe en fn y fn2 los nombres de los archivos con path // Luego se lee y se guarda en arreglos fin y time String fn = String.format("%s/config.dat", data_dir); String [] fin = loadStrings(fn); String fn2 = String.format("%s/time.dat", data_dir); String [] time = loadStrings(fn2); // Se dibuja cada cuadro. Primero se borra todo con blanco background(255); // Se pone color azul fill(0,0,200); // Se recorre el arrglo fin y se hace un circulo. Se corre en L/2 para que quede centrado en la pantalla for (int i =0 ; i < fin.length; i++) { String[] pieces = split(fin[i], ' '); float x = float(pieces[0]); float y = float(pieces[1]); ellipse(u2px*(x+L/2),u2px*(y+L/2),dpix,dpix); } // Se pone color negro. Se pone el texto con el tiempo fill(0,0,0); text(time[0],20,20); // Si se aprieta p se imprime a un archivo con un numero ### consecutivo if(keyPressed && key=='p') { saveFrame("output-####.png"); } //saveFrame("output-####.png"); }