天下网吧 >> 网吧系统 >> 系统动态 >> 正文

几行代码,程序猿秒变大艺术家!

2016-3-27不详佚名
="x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y">4)break;}return log(k)*47;

}

unsigned char BL(int i,int j){

float x=0,y=0;int k;for(k=0;k++<256;){float a="x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y">4)break;}return 128-log(k)*23;

}

Manuel Kasten也制作了一个Mandelbrot集的图片,与刚才不同的是,该图描绘的是Mandelbrot集在某处局部放大后的结果:

几行代码,程序猿秒变大艺术家!

它的代码如下:

unsigned char RD(int i,int j){

double a=0,b=0,c,d,n=0;

while((c=a*a)+(d=b*b)<4&&n++<880)

{b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}

return 255*pow((n-80)/800,3.);

}

unsigned char GR(int i,int j){

double a=0,b=0,c,d,n=0;

while((c=a*a)+(d=b*b)<4&&n++<880)

{b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}

return 255*pow((n-80)/800,.7);

}

unsigned char BL(int i,int j){

double a=0,b=0,c,d,n=0;

while((c=a*a)+(d=b*b)<4&&n++<880)

{b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}

return 255*pow((n-80)/800,.5);

}

这是Manuel Kasten的另一作品:

几行代码,程序猿秒变大艺术家!

生成这张图片的代码很有意思:函数依靠static变量来控制绘画的进程,完全没有用到i和j这两个参数!

unsigned char RD(int i,int j){

static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;

}

unsigned char GR(int i,int j){

static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;

}

unsigned char BL(int i,int j){

static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;

}

这是来自githubphagocyte的作品:

几行代码,程序猿秒变大艺术家!

它的代码如下:

unsigned char RD(int i,int j){

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;

}

unsigned char GR(int i,int j){

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return (int(5*((i+DIM)*s+y))%2+int(5*((DIM*2-i)*s+y))%2)*127;

}

unsigned char BL(int i,int j){

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return (int(29*((i+DIM)*s+y))%2+int(29*((DIM*2-i)*s+y))%2)*127;

}

这是来自githubphagocyte的另一个作品:

几行代码,程序猿秒变大艺术家!

这是一张使用diffusion-limited aggregation模型得到的图片,程序运行起来要耗费不少时间。代码很有意思:巧妙地利用宏定义,打破了函数与函数之间的界限,三段代码的字数限制便能合在一起使用了。

unsigned char RD(int i,int j){

#define D DIM

#define M m[(x+D+(d==0)-(d==2))%D][(y+D+(d==1)-(d==3))%D]

#define R rand()%D

#define B m[x][y]

return(i+j)?256-(BL(i,j))/2:0;

}

unsigned char GR(int i,int j){

#define A static int m[D][D],e,x,y,d,c[4],f,n;if(i+j<1

本文来源:不详 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下