//Autor Ing Carlos Lino Rengifo
float angulo;
float x,y;
int col;
void setup()
{
size(800,600);
background(0);
col= 0;
colorMode(HSV);
angulo = 0;
x=120;
y=300;
koch(5,480);
curvakoch(3);
curvapeano(3);
}
void gira(float ang)
{
angulo+= PI*ang/180;
}
void salta(float xx, float yy)
{
x= xx;
y= yy;
}
void salta(float distancia)
{
float xx = x+distancia*cos(angulo);
float yy = y-distancia*sin(angulo);
salta(xx,yy);
}
void traza(float distancia)
{
float xx= x+distancia*cos(angulo);
float yy= y-distancia*sin(angulo);
col = (col+1)%256;
stroke(col,255,255);
line(int(xx),int(yy),int(x),int(y));
salta(xx,yy);
}
void koch(int nivel, float distancia)
{
if ( nivel == 0)
{
traza(distancia);
}
else
{
koch(nivel-1,distancia/3);
//salta(distancia/3);
gira(60.0);
koch(nivel-1,distancia/3);
//salta(distancia/3);
gira(-120.0);
koch(nivel-1,distancia/3);
//salta(distancia/3);
gira(60.0);
koch(nivel-1,distancia/3);
}
}
void curvakoch(int orden)
{
float distancia = (3*height-30)/(2*1.732);
x= width/2 - distancia/2;
y= (distancia/3)*1.732/2+5;
salta(x,y);
koch(orden,distancia);
gira(-120.0);
koch(orden,distancia);
gira(-120.0);
koch(orden,distancia);
}
void peano(int nivel, float distancia)
{
if (nivel == 0)
{
traza(distancia);
}
else
{
peano(nivel-1,distancia/3);
gira(-90.0);
peano(nivel-1,distancia/3);
gira(90.0);
peano(nivel-1,distancia/3);
gira(90.0);
peano(nivel-1,distancia/3);
peano(nivel-1,distancia/3);
gira(90.0);
peano(nivel-1,distancia/3);
gira(90.0);
peano(nivel-1,distancia/3);
gira(90.0);
peano(nivel-1,distancia/3);
peano(nivel-1,distancia/3);
}
}
void curvapeano(int orden)
{
float distancia = width/3;
x= width/2-height/2;
y=width/2;
salta(x,y);
peano(orden,distancia);
}
No hay comentarios:
Publicar un comentario