Nuevo Proyecto: IE2022, Matias Hidalgo
Título | Nuevo Proyecto: IE2022, Matias Hidalgo |
---|---|
Tipo de Proyecto | Proyecto de Pregrado |
Período | 2022-2022 |
Asignatura | Imagen Escrita |
Del Curso | Imagen Escrita 2022 |
Carreras | Diseño |
Alumno(s) | Matías Hidalgo |
Profesor | Herbert Spencer |
URL | https://editor.p5js.org/Matiashidalgopizarro/sketches/w3p2SGkLf |
Proyecto (Vertices de Elipse)
Información de proyecto
Elaboración de circunferencias de forma algorítmica, que varían su radio en tres capas distintas por las cuales se presenta una aleatoriedad individual de cada radio de color. Basado en los parámetros de RGB, con una mayor presencia de tonos rojos para presentar una paleta más estable. La dispersión de los círculos sobre el plano se presenta por medio de la generación de líneas que forman una serie de “L”, que va variando en su posición creando los círculos en cada uno de los vértices generados.
Código
let x, y; // posición de origen x e y let currentangle = 2; // lugar de direccion de la linea de circulos let step = 60; // cuánto se mueve en cada 'F' let angle = 86; // cuánto gira, con un '-' o '+' let thestring = 'A'; // "axioma" o inicio de la cadena let numloops = 5; // cuántas iteraciones let therules = []; // arreglo para las reglas therules[0] = ['A', '-BF+AFA+FB-']; // regla 1 therules[1] = ['B', '+AF-BFB-FA+']; // regla 2 let whereinstring = 0;
function setup() {
createCanvas(600, 400); background(0); stroke(100,20,30);
// iniciar la posición x e y en la esquina inferior izquierda x = 5; y = height - 5;
for (let i = 0; i < numloops; i++) { thestring = lindenmayer(thestring); }
}
function draw() {
// dibujar el caracter actual en la pantalla drawIt(thestring[whereinstring]);
// incrementar el punto de la cadena de circulos // si sobrepasamos el final, volver al inicio. whereinstring++; if (whereinstring > thestring.length - 2) whereinstring = 0;
}
function lindenmayer(s) {
let outputstring = ;
// buscar coincidencias de símbolo for (let i = 0; i < s.length; i++) { let ismatch = 0; // por defecto, sin coincidencia for (let j = 0; j < therules.length; j++) { if (s[i] == therules[j][0]) { outputstring += therules[j][1]; ismatch = 20; //si tenemos una coincidencia, no copiemos el símbolo break; } } // si no coincide, copiar símbolo. if (ismatch == 0) outputstring += s[i]; }
return outputstring; // enviar cadena modificada
}
// dibujar los comandos function drawIt(k) {
if (k=='F') { // dibujar hacia adelante let x1 = x + step * cos(radians(currentangle)); let y1 = y + step * sin(radians(currentangle)); line(x, y, x1, y1); // conectar anterior con el nuevo
// actualizar posicion x = x1; y = y1; } else if (k == '+') { currentangle += angle; // doblar hacia la izquierda } else if (k == '-') { currentangle -= angle; // doblar hacia la derecha } // valor aleatorio de color let r = random(20, 300); let g = random(20, 160); let b = random(20, 150); let a = random(20, 150);
// valor aleatorio de radio let radius = 10; radius += random(20, 700); radius += random(20, 100); radius += random(0, 10); radius = radius / 4;
// dibujo que dan funcion a los sistemas de color y radio fill(r, g, b, a); ellipse(x, y, radius, radius);
} // basado en sistema L