xxxxxxxxxx
// Author: Sol Sarratea @solquemal
// Title: Julia 0
//Numeros Complejos
precision mediump float;
uniform float u_time;
uniform vec2 u_resolution;
// Multilicacion de vectores :
// sean a,b vectores de 2 componentes se los puede pensar como numeros complejos. Luego:
// a = ax + ay i, donde `ax` es la parte real y `ay` la parte imaginaria
// b = bx + by i, donde `bx` es la parte real y `by` la parte imaginaria
// La multiplicacion queda definida como :
// a * b = (ax * bx - ay * bx) + ( ax * by + ay * bx ) i
vec2 multC(vec2 a, vec2 b){
float re = a.x*b.x - a.y*b.y;
float im = a.x*b.y + a.y*b.x;
return vec2(re,im);
}
vec2 uv(){
/* Devuelve las posiciones del canvas en rango [-1.,1.]x[-1.,1.] */
vec2 pos = gl_FragCoord.xy/u_resolution;
pos = pos *2.-1.;
return pos;
}
void main() {
vec3 color;
vec2 pos = uv()*1.5;
for (int i = 0; i < 100; i++) {
//Iteramos la funcion: f(z) = z * z ;
pos = multC(pos,pos);
//Si ademas trasladamos, observar como cambia:
//pos.x -= 0.7;
//pos.y -= 0.27;
//Coloreamos a cada iteracion
color.rb += sin(pos*10.) * float(i);
}
gl_FragColor = vec4(color,1.);
}