關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 用計算機程序制作三維立體畫

        用計算機程序制作三維立體畫

        作者: 時間:2012-08-17 來源:網絡 收藏

        寄生在Windows 3.1中的Pbrush軟件上。借助于它來構筑立體形體(即立體形體水平剖面高低坐標數據文件圖8),設計原始圖案(圖9)。運行后,逐行輸入并處理以上兩個文件中的圖形,然后輸出立體畫結果文件(圖10)。最后,用Pbrush來觀賞立體畫result.bmp。當然,要設計出令人賞心悅目的立體畫,必須在立體形體和圖案素材的選擇和搭配上做到天衣無縫,獨具匠心。

        @@09A04007.GIF;圖8@@

        @@09A04008.GIF;圖9@@

        @@09A04009.GIF;圖10清單@@

        /*--from 1995.4.19--to 1995.5.18----*/includestdio.h>

        #define COMPRESSION 0

        #define SIZE-OF-BITMAPFILEHEADER 14

        #define SIZE-OF-BITMAPINFOHEADER 40

        #define SIZE-OF-RGBQUAD 4

        #define PIXEL-DATE-OFFSET 14+40+4*16

        /*SIZE-OF-BITMAPFILEHEADER+SIZE-OF-BITMAPINFOHEADER+BITS-PER-PIXEL

        *NUM-COLOR*/

        #define NUM-COLOR 16

        #define NUM-LINE 400

        #define WIDTH 640

        #define BITS-PER-PIXEL 4

        #define PIXEL-PER-BYTE 2 /*8/BITS-PER-PIXEL*/

        #define BYTE-PER-LINE 320 /*((WIDTH*BITS-PER-PIXEL-1)/32+1)*4 */

        #define NO-DOT WIDTH+1

        #define EYE-SPACE 128

        struct{

        unsignde char color ;

        unsigned int pri-x ;

        unsigned int nxt-x ;

        }dot[WIDTH];

        main()

        {

        struct tagBITMAPFILEHEADER{

        unsigned char bfType1,bfType2; /* always equal to#39;BM#39;*/

        unsigned long int bfSize; /*size of file */

        unsigned int bfReserved1,bfReserved2; /* set to zero */

        unsiged long int bfoffits; /*byte offset from BITMAPFILEHEADER to bitmap p

        ixel

        data in the file */

        }BITMAPFILEHEADER;

        struct tagBITMAPINFOHEADER{

        unsigned long int biSize,/* size of BITMAPINFOHEADER */

        biWidth;/* width in pixels biHeight;/* height in pixels */

        unsigned int biPlanes, /* always 1 */

        biBitCount; /* color bits per pixel must be 1,4,8 or 24 */

        unsigned long int biCompression, /*BI-RGB,BI-RLE 8 or 4*/

        biSizeImage, /*total bytes in image */

        biXPelsPerMeter,/* 0,or opt,h res. */

        biYPelsPerMeter,/* 0,or opt,h res. */

        biClrUsed, /* normally 0,can set a lower no. colors than biBitCount */

        biClrImportant; /* normally 0 */

        }BITMAPINFOHEADER;

        struct tagRGBQUAD{

        unsigned char rgbBlue, /* blue intensity,0-255 */

        rgbGreen, /* green intensity,0-255 */

        rgbRed, /* red intensity,0-255 */

        rgbReserved; /* reserved,set to Zero */

        }RGBQUAD[NUM-COLOR];

        char *fn-layer=layer.bmp;

        char *fn-org=origin.bmp;

        char *fn-result=result.bmp;

        FILE *flayer,*fOrigin, *fResult;

        unsigned char tmp-byte1,tmp-byte2;

        unsigned int line,i-byte,i-pixel,x;

        unsigned int layer;

        int left-x,right-x;tmp-x;

        unsigned long int cur-offset;

        unsigned char h[WIDTH],org-color[WIDTH];

        puts(---WINTRICK---);

        puts(---by Li Jisong ---);

        if( (fLayer=fopen(fn-layer,rb) )!=NULL) {

        fread(BITMAPFILEHEADER,SIZE-OF-BITMAPFILEHADER,1,fLayer);

        fread(BITMAPINFOHEADER,SIZE-OF-BITMAPINFOHEADER,1,fLayer);

        if( BITMAPFILEHEADER.bfType1==#39;B#39; BITMAPFILEHEADER.bfType2==#39;M#39;

        BITMAPINFOHEADER.biWidth==WIDTH BITMAPINFOHEADER.biHeight==NUM-

        LINE

        BITMAPINFOHEADER.biBitCount==BITS-PER-PIXEL

        BITMAPINFOHEADER.biCompression==COMPRESSION)

        fread(RGBQUAD,SIZE-OF-RGBQUAD,NUM-COLOR,fLayer);

        else{

        fclose(fLayer);

        printf(File %s is not fit for this program! ,fn-layer);

        getch();

        exit(1);

        }

        }

        else{

        printf(File %s does not exist! ,fn-layer);

        getch();

        exit(2);

        }

        if( (fOrigin=fopen(fn-org,rb))!=NULL) {

        fread( BITMAPFILEHEADER,SIZE-OF-BITMAPFILEHEADER,1,fOrigin);

        fread( BITMAPINFOHEADER,SIZE-OF-BITMAPINFOHEADER,1,fOrigin);

        if( BITMAPFILEHEADER.bfType1==#39;B#39; BITMAPFILEHEADER.bfType2==#39;M#39;

        BITMAPINFOHEADER.biWidth==WIDTH BITMAPINFOHDADER.biHeight==NUM-LINE

        BITMAPINFOHEADER.biBitCount==BITS-PER-PIXEL

        BITMAPINFOHEADER.biCompression==COMPRESSION)

        fread(RGBQUAD,SIZE-OF-RGBQUAD,NUM-COLOR,fOrigin);

        else {

        fclose(fOrigin);

        printf(File %s is not fit for this program! ,fn-org);

        getch();

        exit(3);

        }

        }

        else {

        printf(File %s does not exist! ,fn-org);

        getch();

        exit(4);

        }

        if( (fResult=fopen(fn-result,wb))!=NULL){

        fwrite(BITMAPFILEHEADER,SIZE-OF-BITMAPFILEHEADER,1,fResult);

        fwrite( BITMAPINFOHIADER,SIZE-OF-BITMAPINFOHEADER,1,fResult);

        fwrite(RGBQUAD,SIZE-OF-RGBQUAD,NUM-COLOR,fResult);

        c語言相關文章:c語言教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 固原市| 雷州市| 巧家县| 那坡县| 大同县| 宝山区| 靖江市| 信阳市| 响水县| 萍乡市| 海安县| 青龙| 柳江县| 杭锦后旗| 阳高县| 苍山县| 麻阳| 青阳县| 岳普湖县| 信阳市| 浪卡子县| 汝州市| 田阳县| 肥乡县| 东乡县| 奉节县| 武隆县| 彩票| 垦利县| 沁阳市| 白水县| 沧州市| 台湾省| 昌平区| 永靖县| 澄迈县| 淮滨县| 黎城县| 灌阳县| 建湖县| 威宁|