• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: C/C++
  • 标签: 消隐  

资源简介

计算机图形学消隐实验源代码,详细、完整的实验代码

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 

#define pi 3.1415926
double angle1angle2;//定义全局变量,用于角度的输入
//按照顶点的编号存储顶点三个坐标
double X[8]={-300300300-300-300300300-300};
double Y[8]={-300-300-300-300300300300300};
double Z[8]={-300-300300300300300-300-300};

int fp[6][4]= //各个面的顶点(按照逆时针方向) 共6个面 8个顶点
{0761  //下
1652  //前
2543  //上
3470  //后
4567  //右
0123};   //左

float colors[6][3] = //定义颜色值
{0.00.00.0 
1.00.00.0 
1.01.00.0 
0.01.00.0 
0.00.01.0 
1.00.01.0};



void x_Rotation(double angle)//将立方体绕x轴旋转angle度  x不变
{
int i;
double ab;
for(i=0;i<8;i++)
{
a=Y[i]*cos(angle)-Z[i]*sin(angle);
b=Y[i]*sin(angle)+Z[i]*cos(angle);
Y[i]=a;
Z[i]=b;
}

}

void y_Rotation(double angle)//将立方体绕y轴旋转angle度
{
int i;
double ab;
for(i=0;i<8;i++)
{a=X[i]*cos(angle)+Z[i]*sin(angle);
b=-X[i]*sin(angle)+Z[i]*cos(angle);
X[i]=a;
Z[i]=b;
}
}

void drawpixel(int t)//画可见面的中点
{
int ab;
double midXmidYmidZ;
glPointSize(15);
glColor3f (colors[t][0]colors[t][1]colors[t][2]); //t面的中间点的颜色
a=fp[t][0];               //选取对角线的两个点
b=fp[t][2];
midX=(X[a]+X[b])/2;
midY=(Y[a]+Y[b])/2;
midZ=(Z[a]+Z[b])/2;
glBegin(GL_POINTS);
glVertex3f(midXmidYmidZ);          //画点
glEnd();
glFlush ( );
}

void drawline(double x1double y1double z1double x2double y2double z2)//画可见面的每条边
{
// glClearColor(1110);         //为颜色缓冲区指定确定的值(redbluegreenalpha),默认都为0,当颜色缓冲区清空时使用
glColor3f (0.0 0.0 1.0); 
glBegin(GL_LINES);
glVertex3f(x1 y1 z1); glVertex3f(x2 y2 z2);   //指定线段的起点和终点
    glEnd();
glFlush ( );
}



void func() //消影函数
{
int f[6]={012345};
int ia1a2a3abN3k;
x_Rotation(angle1);     //先转一个初始角度
y_Rotation(angle2);

for(i=0;i<6;i++)     //6个面
{
a1=fp[i]

评论

共有 条评论

相关资源