God Iris - Algoritmo de Gonzalo RM
GOD IRIS (El Iris de Dios)
En mi humilde opinión, no existe nada mas hermoso en el Arte Generativo que la exploración de los Algoritmos Mátematicos que dan vida a cada una de las formas que conseguimos y contemplamos.
Me resulta romántica la idea de pensar que estos algoritmos siempre estuvieron ahi, perdurando en la sombra de las Matemáticas: Como esquirlas de oro esperando a que alguien las descubriera y se asombrara de su propio lenguaje: El Arte Generativo.
Nos adentramos en el mundo de la creatividad con cinceles y brochas como arqueólogos del futuro y pulimos la roca de lo desconocido para obtener, casi por casualidad, uno que otro algoritmo.
Este es el caso del Algoritmo de GonzaloRM.
EL ALGORITMO DE GonzaloRM
Una de las cosas que siempre había querido crear es un Algoritmo sencillo que mejorase lo conocido y que confeccionase una espiral. Eso es lo que hace el Algoritmo de GonzaloRM: Crear un sendero en espiral ajustado al ancho del diámetro del elemento dibujado:
X = X + SENO( FrameCount * Velocidad - DISTANCIA ENTRE X/Y y Centro-Del-Lienzo
Y = Y + COSENO( FrameCount * Velocidad - DISTANCIA ENTRE X/Y y Centro-Del-Lienzo
CÓDIGO
//(C)Sergio Salazar Latorre
//Algoritmo de GonzaloRM
//Para la creacion de caminos espirales a partir del diametro del elemento dibujado
let l = 600
let epl = 1000
let D = l/epl
let r=D/2
let p=Array(epl*epl)
function setup() {
createCanvas(l,l);
for(let i=0; i<epl; i++){
p[i]=new P(random(-D*3,l+D*3),random(-D*3,l+D*3))
}
}
function draw() {
background(0,5);
stroke(255,1)
for(let i=0; i<epl; i++){
p[i].ver()
}
push()
firma()
pop()
}
function firma(){
fill(255,0,0)
strokeWeight(4)
stroke(255)
text("(C)Sergio Salazar Latorre",10,l-30)
text("God Iris - Algoritmo de GonzaloRM", 10,l-10)
strokeWeight(1)
}
class P{
constructor(x,y){
this.x=x
this.y=y
this.v = 0.01
this.c=color(random(0,255),random(0,255),random(0,255))
}
ver(){
//Algoritmo de GonzaloRM para la creacion de caminos espirales ajustados al diametro del elemento dibujado
this.x = (this.x + sin(frameCount*this.v-
dist(this.x,this.y,
l/2,l/2)))%l
this.y = (this.y + cos(frameCount*this.v-
dist(this.x,this.y,
l/2,l/2)))%l
if(this.x<-D*3||this.x>l+D*3||this.y<-D*3||this.y>l+D*3){
this.x=l/2
this.y=l/2
}
fill(this.c)
circle(this.x,this.y, 5)
}
}
Comentarios
Publicar un comentario