原理解说(参考维基): 塔珀自指公式(Tupper's self-referential formula)是杰夫·塔珀(Jeff Tupper)发现的自指公式:此公式的二维图像与公式本身外观一样。此公式在众多数学与计算机科学课程里被用作绘制公式图像的练习作业。 公式最初于他2001年SIGGRAPH的论文中提及。此论文主要讨论他开发的GrafEq公式作图程序的相关方法。 此公式是个不等式: 其中表示地板函数,mod表示模除。如果让常数k等于:
然后将在0≤x≤105和k≤y≤k+16所示范围中符合以下不等式的点(x,y-k)绘制出来,结果会是这样: 这个公式本身是一个从常数k中解码出一个相对应的黑白位图的通用方法,因此事实上此公式可以用来绘制任何图像。当此公式被绘制到0≤y的无界正向带里的时候,图像上显现出一个纵向窄带,在此窄带内所有可能的17像素高的位图都出现过。这块无穷大的位图中有一个横向切片描绘了绘制函数本身,但这并不意外,因为别的切片会描绘所有能被填进17像素高的位图中的公式。塔珀还通过电子邮件传播了这个原始公式的扩展版本,这些版本的公式将其他的切片都抹除了。 这里的常数k是将公式的单色位图化成二进制后乘以17得来的。如果将k除以17(并化成二进制),最小一位代表图像左下角的像素;最小的17位构成了最左边的一列像素;第二小的17位构成了左数第二列像素;以此类推。 以下见http://martin1994.sinaapp.com/archives/241 k值是一段二进制数据,只是排列方式未知,所以首先开始找出这个函数的工作原理: 根据观察,原函数中三次出现的”17″便是图像的高(h); x·2^(-n)的意思是对x(二进制)右移n位(带小数); 原函数右侧的值域是[0,1)。因此”1/2 < f(x,y)'的意思也就是'1="round(f(x," y))',而结合上一条综合来看也就是x向右偏移n位(不带小数)后是个奇数,也就是最后一位是="" 1=""> “n = x^h + mod(y, h)”也就是说,x每增加1这个偏移量就增加h,而在每个h内y每增加1这个偏移量就增加1. 这就意味着,那个被偏移的数是以h为一个单位,(x, y)对应着”第x个h内的第y个bit”. 综上所述,k/h的二进制写法从右至左分别代表着(列从左至右,行从下至上)”第1列第1行;第1列第2行;第1列第3行;……;第2列第1行;第2列第2行;……”. 由此推断,如果要写”SB”的话,h = 5,k = BIN(01010101011111100000101101010101101) * DEC(5) = DEC(57372951905). 效果图如下. |
|