zoukankan      html  css  js  c++  java
  • 在固定长方形里产生渐变

    /* CPSC 2100: redgreen.c

    This program creates a ppm file for a 600x400 box, that is red
    in the left half and green in the right half.

    The ppm image is written to the file specified on the command
    line, e.g. the program is initiated as:

    ./redgreen output-filename

    which would create the PPM image file specified by output-filename

    */

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <memory.h>
    #include <assert.h>
    #include "rgb.h"


    int main(int argc, char *argv[]) {
    pixel_t *img; /* image array */
    //int rowNdx, colNdx; /* Row and column indices */
    FILE *imageFP; /* PPM output file */

    /* Open the PPM output file */
    if (argc != 4)
    {
    fprintf(stderr, "Usage: ./redgreen columns rows output-filename ");
    exit(1);
    }

    imageFP = fopen(argv[3], "w");
    assert(imageFP != NULL);
    int rows = 400;
    int columns = 600;
    rows = atoi(argv[2]);
    columns = atoi(argv[1]);
    double ratio = columns/rows;

    double maxdistance = sqrt((ratio*(rows - 1)) * (ratio*(rows - 1)) + (columns - 1) * (columns - 1));
    double distance;


    img = (pixel_t *) malloc(sizeof(pixel_t) * columns * rows);
    pixel_t *pixaddr = NULL;


    /* Write the ppm header */
    char ss[100];
    memset(ss, 0, sizeof(char) * 100);
    sprintf(ss, "P6 %d %d 255 ", columns, rows);

    fprintf(imageFP, ss);
    int r,c;
    for (r = 0; r < rows; r++)
    {
    for (c = 0; c < columns; c++)
    {
    distance = sqrt((ratio*r) * (ratio*r) + c * c);
    pixaddr = img + r * columns + c;
    pixaddr->red = (1 - distance/maxdistance)*255;
    pixaddr->blue = distance/maxdistance*255;
    pixaddr->green = 0;
    }
    }

    /* Write out the pixel */
    fwrite(img, sizeof(pixel_t), columns * rows, imageFP);
    free(img);
    return 0;
    }

    rgb.h

    typedef struct pixel_type
    {
    unsigned char red;
    unsigned char green;
    unsigned char blue;
    } pixel_t;

    参考

    http://people.cs.clemson.edu/~rlowe/cs2100/homework/spr14/hw1/hw1.shtml

  • 相关阅读:
    jstl嵌套以及输出json的逗号
    关闭win10 更新以后自动重启
    maven 配置错误。
    SQL SERVER 订阅发布在restore DB以后的问题
    Unable to convert MySQL date/time value to System.DateTime
    sql server恢复卡在restoring的解决方法
    打开Excel时总是运行Windows Installer(Visual studio)解决方法
    单元测试用excel connstr
    node.js调试
    javascript数组对象实例方法
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/3647438.html
Copyright © 2011-2022 走看看