【问题标题】:Diagonal line in PNM P6 not drawing correctlyPNM P6 中的对角线未正确绘制
【发布时间】:2014-06-30 17:22:45
【问题描述】:

我目前正在为一个作业编写程序,该作业需要从标准 PNM P6 文件的左上角绘制一条完美的实心对角线(使所有 x=y)。我对文件 I/O 没有任何问题。

但是,我无法正确显示对角线。我需要的不是来自角落的单条实心白线,而是像this picture 中所示的环绕图像的虚线。

有人知道出了什么问题吗?

我的功能如下:

Image *
DiagonalWhite(Image *img)
{
    int i, j;

    for (i = 0; i < img->x; i++)
    {
        for (j=0; j < img->y; j++)
        {
            if (i==j)
            {
                img->data[i*img->y+j].red=255;
                img->data[i*img->y+j].green=255;
                img->data[i*img->y+j].blue=255;
            }
        }   
    }

    return img; 
}

【问题讨论】:

    标签: c ppm


    【解决方案1】:

    你没有给出Image *img的任何定义,所以实际上这个问题不能有把握地回答;但是,我假设您正在上与昨天的Issues writing PNM P6 相同的课程。

    你的乘法方向错误。 img-&gt;y 保存图像的高度。但是,由于您需要 span,因此您应该使用 img-&gt;x -- width -- 降低 i 像素(然后添加 j像素向右走)。

    img->data[i*img->x+j].red=255; /* x, not y */
    

    注意:这些属性的更好名称应该是 widthheight

    注意:在widthheight 的最小值上只循环一次并立即设置 pixel[i,j] 比测试哪个“具有”相同的 x 和 y 位置更容易和更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多