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

  • 相关阅读:
    centos7安装zabbix3.4
    Linux修改网卡名称enss33到eth0--Ubuntu16和centos7
    记一次zabbix server挂掉的事件
    angularJs 技巧总结及最佳实践
    Yii2中的format
    本博客停止更新,新内容在个人网站上
    说下browserslist
    Yii2 软删除
    vue-webpack-boilerplate分析
    Node总结 模块机制
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/3647438.html
Copyright © 2011-2022 走看看