Imagen Escrita: Mapeo de Curvas

De Casiopea


Captura de pantalla 2012-04-08 a la(s) 20.29.37.PNG


TítuloMapeo y Normalización
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 3
Período2012-
Del CursoImagen Escrita 2012
CarrerasArquitectura, Diseño Gráfico
Alumno(s)Aalumnus Exemplaris
ProfesorHerbert Spencer
float y, n;  // declaro 2 floats: 'y' para el f(x) y 'n' para el valor normalizado 
float m;     // 'm' será utilizado como el valor mapeado a las coordenadas del dibujo

void setup() {
  size(500, 500);
}

/*
función propia que dibuja una grilla y que recibe 2 parámetros
 las divisiones en 'x' y las divisiones en 'y' como números enteros (int)
 */

void grilla(int divsX, int divsY) {

  stroke(240);  // color del trazo, un gris muy claro

  float xSpacer = width/(float)divsX;  // se calcula el ancho en 'x' a partir de las divisiones
  float ySpacer = height/(float)divsY; // lo mismo en 'y'

  for (float y = ySpacer; y < height; y +=ySpacer) {
    line(0, y, width, y);  // se dibujan las líneas horizontales
  }
  for (float x = xSpacer; x < width; x +=xSpacer) {
    line(x, 0, x, height); // se dibujan las líneas verticales
  }
}

/* Otra función propia, que hace cruces. 
 Esta función recibe las coordenadas y el 
 tamaño en que se dibujará la cruz  */

void cruz(float x, float y, float tam) {
  float t = tam/2; 
  stroke(240, 20, 20, 50);
  line(x-t, y-t, x+t, y+t);
  line(x-t, y+t, x+t, y-t);
}

void draw() {
  background(255);  // fondo blanco
  grilla(40, 20);   // haga la grilla con 40 divisiones en 'x' y 20 en 'y'

  /* calculo, para cada pixel en 'x' (del ancho)... */
  for (int x = 0; x < width; x++) {

    n = norm(x, 0, width);  // se normaliza el en el ancho
    m = map(mouseX, 0, width, 1, 40); // mapeo la posición horizontal del mouse entre 1 y 40
    y = pow(n, m) * height;  // calculo la altura en: ('n' elevado a 'm') multiplicado por el alto (500)
 
    cruz(x, y, 5);
    cruz(x, height-y, 5);
  }
  println(m); // imprime el valor mapeado en la consola
}