码迷,mamicode.com
首页 > 其他好文 > 详细

Tweetable Mathematical Art 习作

时间:2014-09-03 21:05:47      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   2014   art   div   

Matrix67 blog里面看到了Tweetable Mathematical Art比赛,感觉挺有意思。

这个比赛的方法很简单,实现3个函数RD(i, j), GR(i, j), BL(i, j)分别返回像素(i, j)的R/G/B值,最终生成1幅1024*1024的图片,看谁的图片被赞最多。要求是每个函数代码不超过140字符,即Tweetable。

手痒写了一个:放大镜效果,简单的Ray Tracing。代码如下:

unsigned short RD(int i,int j){
#define F(x) float x
#define R return
#define Ci (DIM/2)
#define Cj Ci
#define Z (Ci/2)
#define G (Ci/8)
#define N 3
R BL(i,j);
}

unsigned short GR(int i,int j){
#define Y(x) sqrt(1.-_sq(x))
R BL(i,j);
}

unsigned short BL(int i,int j){
F(r)=sqrt(0.+_sq(i-Ci)+_sq(j-Cj));F(s)=r/Z;if(s<1){i-=Ci;j-=Cj;F(k)=(Y(s)*Y(s/N)+_sq(s)/N)*N;i=i/k+Ci;j=j/k+Cj;}R (i/G+j/G)%2*255;
}

效果如下:

bubuko.com,布布扣

 

实际上,代码中放大镜的位置和尺寸都是可调的。取不同位置生成了一系列图片,然后做成一个动画,如下:

bubuko.com,布布扣

Tweetable Mathematical Art 习作

标签:style   blog   http   color   io   ar   2014   art   div   

原文地址:http://www.cnblogs.com/daishuo/p/3954422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!