给我的指示非常模糊,我完全不知道该做什么。需要帮助。我会尽力解释的,希望有人能帮我。
当设置像素(i,j)的颜色时,需要生成一个指定宽度和高度的ppm文件,其值为:
float col = float (((i & 0x08) == 0) ^ ((j & 0x08) == 0));
对于RGB颜色,您可能需要使用以下结构:
struct RGB {
float r;
float g;
float b;
};数组中的每个元素都在0.0、1.0的范围内,在写入文件之前必须转换为0,255。
这是和我一样多的信息。我真的失去了他真正想让我做的事。对于更有经验的人来说,这可能是足够的信息,但对我来说却不是。有人能详细说明一下吗。另外,第一个公式/代码片段到底是做什么的?
我仍然不知道i和j是什么,公式是什么,也不知道如何生成写到RGB!??的2d数组的值。
发布于 2013-01-16 05:59:14
PPM是非常简单的位图格式,你基本上已经在你的问题中描述过了。若要查看更多细节,请在谷歌上搜索或退出http://netpbm.sourceforge.net/doc/ppm.html。
从范围0.0 ..。1.0到0 .您只需对每个像素分量执行255.0的乘法运算。
总结如下:将ppm头写入文件,迭代所有像素,将其分量乘以255,转换为整数,以文本形式写入文件。文件中的所有值都用空格分隔。
第一个代码片段告诉您如何生成图片。它基本上意味着颜色是白色的,如果右边的第四位在i和j坐标上是不同的,如果它们是相同的,则是黑色。这应该会生成一个16乘16平方的棋盘图案。
发布于 2013-01-16 05:57:48
在第一个公式中,您将不会得到在0 1范围内的值,而是只得到0s和1s,因为运算符==返回true或false (在位的表示中为0或1)。大于0和/或1的操作XOR (^)也将返回0或1。
这是一个用于异或操作的真值表
-----------------
| a | b | a ^ b |
-----------------
| 0 | 0 | 0 |
-----------------
| 0 | 1 | 1 |
-----------------
| 1 | 0 | 1 |
-----------------
| 1 | 1 | 0 |
-----------------从范围0 1到0 255的转换只不过是将值乘以255。
void convertTo_255( struct RGB * array, size_t count {
for ( size_t i = 0; i < count; i++ ) {
array[ i ].r *= 255;
array[ i ].g *= 255;
array[ i ].b *= 255;
}https://stackoverflow.com/questions/14351831
复制相似问题