Transformaciones del espacio
Helpers para jugar con transformaciones en el espacio
const float PI = 3.141592;
vec2 tunnel(vec2 p, float size, float time)
{
float a = atan(p.y, p.x);
float r = sqrt(dot(p, p));
return vec2(a / PI, time + (size / r));
}
float distancia_p(vec2 pos, float p){
float dp= pow(abs(pos.x),p)+pow(abs(pos.y),p);
return pow(dp,1./p);
}
vec2 tunnelP(vec2 pos, float size, float time,float p)
{
float a = atan(pos.y, pos.x);
float r = distancia_p(pos,p);
return vec2(a / PI, time + (size / r));
}
vec2 paredes(vec2 pos, float amp, float time){
pos.y = amp/abs(pos.y);
pos.x *= pos.y;
pos = fract(pos+time);
return pos;
}
float reflejo(inout vec2 pos, float angle){
vec2 normal = vec2(cos(angle),sin(angle));
float d = dot(pos, normal);
pos -= normal*min(0.,d)*2.;
return smoothstep(0.03,0.,abs(d));
}
vec2 rotacion (vec2 pos, float cantidad){
return pos * mat2(cos(cantidad),sin(cantidad),-sin(cantidad),cos(cantidad));
}
Last updated