Imagen Escrita: Mapeo de Curvas

De Casiopea
Mapeo y Normalización


TítuloMapeo y Normalización
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 3
Período2012-
Del CursoImagen Escrita 2012,
CarrerasArquitectura, Diseño Gráfico"Diseño Gráfico" is not in the list (Arquitectura, Diseño, Magíster, Otra) of allowed values for the "Carreras Relacionadas" property.
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
}