整数数学布局在网格上时可以生成惊人的模式。即使是最基本的功能,也可以完成精美的设计!
你的挑战
为1024x1024图像的红色,绿色和蓝色值编写3个Tweetable(表示140个字符或更少)功能体。
函数的输入将是两个整数i(给定像素的列号)和j(给定像素的行号),输出将是0到1023(含)之间的无符号短整数,表示给定的数量像素(i,j)中存在的颜色。
例如,以下三个函数产生以下图片:
/* RED */
return (unsigned short)sqrt((double)(_sq(i-DIM/2)*_sq(j-DIM/2))*2.0);
/* GREEN */
return (unsigned short)sqrt((double)(
(_sq(i-DIM/2)|_sq(j-DIM/2))*
(_sq(i-DIM/2)&_sq(j-DIM/2))
));
/* BLUE */
return (unsigned short)sqrt((double)(_sq(i-DIM/2)&_sq(j-DIM/2))*2.0);
/* RED */
return i&&j?(i%j)&(j%i):0;
/* GREEN */
return i&&j?(i%j)+(j%i):0;
/* BLUE */
return i&&j?(i%j)|(j%i):0;
规则
- 有了此C ++代码,就可以替换您的函数。我提供了一些宏,并包含了该库,并且您可能包含complex.h。您可以使用这些库和/或宏中的任何函数。请不要使用超出此范围的任何外部资源。
如果该版本不适合您,请确保您使用的是:
g++ filename.cpp -std=c++11
如果这不起作用,请使用使用未签名字符而不是未签名短裤的备用版本。
Michaelangelo提供了清理后的24位或48位彩色输出版本。
- 您可以用另一种语言实现自己的版本,但是它的行为方式必须与提供的C ++版本相同,并且只能使用C ++内置函数,库或提供的宏中的函数来使其公平。
- 仅发布您的三个功能主体-请不要在帖子中包含我的代码
- 请提供图像的较小版本或嵌入式副本。它们被制成ppm格式,可能需要转换为其他格式才能在stackexchange上正确查看。
- 功能主体(不包括签名)必须为140个字符或更少。
- 这是一次人气竞赛-多数选票获胜