• 大小: 16.35 KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-08-08
  • 语言: 其他
  • 标签:

资源简介

计算机图形学实验(哈尔滨工程大学)
共有4次上机实验的源代码
用c++编写的

资源截图

代码片段和文件信息

#include
#include
#include

#define MAXSF   4
#define MAXP    3
#define MAXVT   4
#define STARTX  200
#define STARTY  200
#define DOWN    20480
#define RIGHT   19712
#define LEFT    19200
#define ESC     283

typedef struct Node
{
    float x;
    float y;
    float z;
}Ver;

Ver surface[MAXSF][MAXP]vertex[MAXVT];
int hideFlag[MAXSF]surColor[MAXSF]={BLUEYELLOWREDWHITE};

void init();/*初始化图形设备*/
void setVert(); /*设置顶点*/
void setSuf(); /*设置面*/
int  isHide(Ver ver[3]); /*判断前后面*/
void switchXYZ(int xyz); /*绕X、Y、Z旋转,转换顶点坐标*/
void delBlock();/*消除遮挡的面*/
void paint();/*显示图形*/
void end();/*结束程序*/

void main()
{
    int ikeyxyz;
    init();
    setVert();
    do
    {
        setSuf();
        for(i = 0; i < MAXSF; i++)
            hideFlag[i]=isHide(surface[i]);
        delBlock();
        paint();
        key=bioskey(0);
        xyz=0;
        switch(key)
        {
            case DOWN:
                xyz = 3;
                break;
            case LEFT:
                xyz = 2;
                break;
            case RIGHT:
                xyz = 1;
                break;
            case ESC:
                end();
            default:
                break;

        }
        if(xyz)
        {
            cleardevice();
            switchXYZ(xyz);
        }
    }while(1);
}

void init()
{
    int drivermode;

    driver=DETECT;
    mode=0;

    initgraph(&driver&mode““);

    setbkcolor(GREEN);
}

void setVert()
{
    vertex[0].x=80vertex[0].y=20vertex[0].z=20;
    vertex[1].x=80vertex[1].y=80vertex[1].z=20;
    vertex[2].x=20vertex[2].y=80vertex[2].z=20;
    vertex[3].x=40vertex[3].y=60vertex[3].z=80;
}

void setSuf() /*是否是这里的问题?*//*必须保证都是逆时针*/
{
    surface[0][0]=vertex[0]surface[0][1]=vertex[2]surface[0][2]=vertex[1];
    surface[1][0]=vertex[1]surface[1][1]=vertex[2]surface[1][2]=vertex[3];
    surface[2][0]=vertex[0]surface[2][1]=vertex[3]surface[2][2]=vertex[2];
    surface[3][0]=vertex[0]surface[3][1]=vertex[1]surface[3][2]=vertex[3];
}


int isHide(Ver ver[3])
{
    Ver NPQ;
    Ver V={001};
    float flag;

    P.x = ver[1].x - ver[0].x;
    P.y = ver[1].y - ver[0].y;
    P.z = ver[1].z - ver[0].z;

    Q.x = ver[2].x - ver[1].x;
    Q.y = ver[2].y - ver[1].y;
    Q.z = ver[2].z - ver[1].z;

    N.x = P.y * Q.z - Q.y * P.z;
    N.y = P.z * Q.x - Q.z * P.x;
    N.z = P.x * Q.y - Q.x * P.y;

    flag = N.x * V.x + N.y * V.y + N.z * V.z;
    if(flag > 0)
        return 0;
    return 1;
}

void switchXYZ(int xyz)
{
    Ver temp;
    int i;
    for(i = 0; i < MAXVT; i++)
    {
        if(xyz == 1)
        {
            temp.x = vertex[i].x;
            temp.y = -vertex[i].z;
            temp.z = vertex[i].y;
        }
        else if(xyz == 2)
        {
            temp.x = vertex[i].z;
            temp.y = vertex[i].y;
            temp.z = -vertex

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1809  2007-09-28 08:19  计算机图形实验\1\DUAN.C

     文件       5835  2000-08-26 10:33  计算机图形实验\1\HOMEWORK.C

     文件       1305  2007-10-12 08:31  计算机图形实验\3\BSPLINE.C

     文件       1217  2007-10-12 08:19  计算机图形实验\3\BEZIER.C

     文件       2803  2007-09-28 06:49  计算机图形实验\上机实验2\task2.c

     文件       3327  2007-09-28 06:49  计算机图形实验\上机实验2\task218.c

     文件       1610  2007-09-28 06:50  计算机图形实验\上机实验2\task237.c

     文件       4571  2007-11-01 19:04  计算机图形实验\4\homework411.c

     目录          0  2007-11-03 15:18  计算机图形实验\1

     目录          0  2007-11-03 15:19  计算机图形实验\3

     目录          0  2007-11-03 15:19  计算机图形实验\上机实验2

     目录          0  2007-11-03 15:28  计算机图形实验\4

     目录          0  2009-02-15 18:58  计算机图形实验

     文件       1809  2007-09-28 08:19  计算机图形实验\计算机图形实验\上机实验1\DUAN.C

     文件       5835  2000-08-26 10:33  计算机图形实验\计算机图形实验\上机实验1\HOMEWORK.C

     文件       2803  2007-09-28 06:49  计算机图形实验\计算机图形实验\上机实验2\task2.c

     文件       3327  2007-09-28 06:49  计算机图形实验\计算机图形实验\上机实验2\task218.c

     文件       1610  2007-09-28 06:50  计算机图形实验\计算机图形实验\上机实验2\task237.c

     文件       1217  2007-10-12 08:19  计算机图形实验\计算机图形实验\上机实验3\BEZIER.C

     文件       1305  2007-10-12 08:31  计算机图形实验\计算机图形实验\上机实验3\BSPLINE.C

     文件       4571  2007-11-01 19:04  计算机图形实验\计算机图形实验\上机实验4\homework411.c

     目录          0  2007-11-03 15:18  计算机图形实验\计算机图形实验\上机实验1

     目录          0  2007-11-03 15:19  计算机图形实验\计算机图形实验\上机实验2

     目录          0  2007-11-03 15:19  计算机图形实验\计算机图形实验\上机实验3

     目录          0  2007-11-03 15:28  计算机图形实验\计算机图形实验\上机实验4

     目录          0  2009-02-15 18:59  计算机图形实验\计算机图形实验

----------- ---------  ---------- -----  ----

                44954                    26


评论

共有 条评论