C++ 创建二维数组以输出pmm文件C++;
给我的指示非常模糊,我完全不知道该怎么做。我需要一些帮助。我会尽力解释,希望有人能帮我 当您使用col值设置像素(I,j)的颜色时,我需要生成指定宽度和高度的ppm文件,如下所示:C++ 创建二维数组以输出pmm文件C++;,c++,arrays,rgb,ppm,C++,Arrays,Rgb,Ppm,给我的指示非常模糊,我完全不知道该怎么做。我需要一些帮助。我会尽力解释,希望有人能帮我 当您使用col值设置像素(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,25
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数组的值在第一个公式中,您不会得到[01]范围内的值,而只会得到0s
和1s
,因为运算符==返回true
或false
(位表示为0或1)。0和/或1上的XOR(^)操作也将返回0或1
这是XOR操作的真值表
-----------------
| a | b | a ^ b |
-----------------
| 0 | 0 | 0 |
-----------------
| 0 | 1 | 1 |
-----------------
| 1 | 0 | 1 |
-----------------
| 1 | 1 | 0 |
-----------------
从范围[01]到[0255]的转换只是将值乘以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;
}
void convertTo_255(结构RGB*数组,大小\u t计数{
对于(大小i=0;i
PPM是一种非常简单的位图格式,您已经在问题中对其进行了基本描述。要查看更多详细信息,请用谷歌搜索或切掉它
要从范围[0.0..1.0]转换到[0..255],只需对每个像素组件执行255.0的乘法
总结:将ppm头写入文件,迭代所有像素,将其分量乘以255,转换为INTERVER,以文本形式写入文件。文件中的所有值都用空格分隔
第一个代码片段告诉您如何生成图片。它基本上意味着,如果右侧第四位在i和j坐标中不同,则颜色为白色,如果它们相同,则颜色为黑色。这将生成一个16×16正方形的棋盘格图案。这是创建/生成结构RGB数组并生成在编译后无法设置数组的大小时,如何使用从命令行传入的维度创建数组。I和j值是什么?I
和j
是您希望设置的像素坐标。如您所述:“*当您设置像素的颜色(I,j)时”值col如所示:float col=float((i&0x08)==0)^((j&0x08)==0));
“我觉得自己像个白痴,因为我已经完成了大部分的设置并工作了,感谢所有的帮助。