资源简介

山大2010级的计算机图形学实验代码,完全原创。opengl球体绘制程序,使用了三角形构建多面体逼近的方法。含实验报告。

资源截图

代码片段和文件信息

#define GLUT_DISABLE_ATEXIT_HACK
#ifdef __APPLE__
#include 
#else
#include 
#endif
#include 
#include 
#include 
#include 
#include 

#define DEG2RAD 0.017453
typedef GLfloat point[3]; 
typedef struct POLAR{
float r;
float alpha;//XoY平面角
float beta;//空间线与XOY夹角
};

GLfloat R=1.000000000;
static GLfloat theta[]={0.00.00.0};
static GLint axis=2;
static GLfloat incress=1.0;
point v[4]={{1.00.00.0}{0.01.00.0}{0.00.01.0}{5.00.00.0}};
/**/
point cs[9];
/**/
POLAR polar={5.0f0.0f0.0f};
float z_rl=1.0fxy_rl=1.0fdown_up=1.0f;
int stepspxpytime_int;
int fill=0rotate=0lookat=0change=1;
LARGE_INTEGER m_nFreq;
LARGE_INTEGER m_nBeginTime;
LARGE_INTEGER nEndTime;
char *time_str*ttle;




/**
/*使用线段循环绘制图形,完成一个闭包
void triangle_l(point apoint bpoint c){
glBegin(GL_LINE_LOOP);
glVertex3fv(a);
glVertex3fv(b);
glVertex3fv(c);
glEnd();
}*/
/**
/*使用多边形绘制三角形
void triangle_p(point apoint bpoint c){
glBegin(GL_POLYGON);
glNormal3fv(a);
glVertex3fv(a);
    glNormal3fv(b);
    glVertex3fv(b);
glNormal3fv(c);
glVertex3fv(c);
glEnd();
}*/
void stringand(char *arg0char *arg1){
char *temp;
temp=arg0;
for(;*arg0!=‘\0‘;arg0++);
for(;*arg1!=‘\0‘;*arg0++=*arg1++);
*arg0=‘\0‘;
arg0=temp;
}
void drawString(const char *str){
int len=0i=0;
wchar_t * wstring;
HDC hDC=wglGetCurrentDC();
GLuint list=glGenLists(1);
for(i=0;str[i]!=‘\0‘;i++){
if(IsDBCSLeadByte(str[i]))
i++;
len++; 
}
//将混合字符统一转化为双字节字符
wstring=(wchar_t*)malloc((len+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACPMB_PRECOMPOSEDstr-1wstringlen);
wstring[len]=L‘\0‘;
for(i=0;i wglUseFontBitmapsW(hDCwstring[i]1list);
glCallList(list);
}
free(wstring);
glDeleteLists(list1);
}
void normalize(point& a){
int i;
for(i=0;i<3;i++){
a[i]/=R;
}
}
void cross(point apoint bpoint cpoint& d){
d[0]=(b[1]-a[1])*(c[2]-a[2])-(b[2]-a[2])*(c[1]-a[1]);
d[1]=(b[2]-a[2])*(c[0]-a[0])-(b[0]-a[0])*(c[2]-a[2]);
d[2]=(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0]);
normalize(d);
}
void triangle(point apoint bpoint c){
point normal={0.00.00.0};
cross(abcnormal);
glNormal3fv(normal);
glVertex3fv(a);
glVertex3fv(b);
glVertex3fv(c);
}
void triX8(point apoint bpoint c){
int ijk;
point vv[3];
for(i=0;i<3;i++){
vv[0][i]=a[i];
vv[1][i]=b[i];
vv[2][i]=c[i];
}
for(i=0;i<2;i++vv[0][0]=-vv[0][0]vv[1][0]=-vv[1][0]vv[2][0]=-vv[2][0])
for(j=0;j<2;j++vv[0][1]=-vv[0][1]vv[1][1]=-vv[1][1]vv[2][1]=-vv[2][1])
for(k=0;k<2;k++vv[0][2]=-vv[0][2]vv[1][2]=-vv[1][2]vv[2][2]=-vv[2][2])
triangle(vv[0]vv[2]vv[1]);
}
void divide_tri(point apoint bpoint cint step){
point vc[3];
int ij;
GLfloat pparg[3];

for(i=0;i<3;i++)vc[0][i]=(a[i]+b[i])/2;
for(i=0;i<3;i++)vc[1][i]=(c[i]+b[i])/2;
for(i=0;i<3;i++)vc[2][i]=(a[i]+c[i])/2;
for(j

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

     文件      32799  2013-05-21 20:25  代码\Debug\test.obj

     文件     208947  2013-05-21 20:25  代码\Debug\test4.exe

     文件     289544  2013-05-21 20:25  代码\Debug\test4.ilk

     文件    3708392  2013-04-13 11:33  代码\Debug\test4.pch

     文件     508928  2013-05-21 20:25  代码\Debug\test4.pdb

     文件     148480  2013-05-21 20:25  代码\Debug\vc60.idb

     文件      77824  2013-05-21 20:25  代码\Debug\vc60.pdb

     文件       7901  2013-05-21 20:25  代码\test.cpp

     文件       3973  2013-04-11 19:39  代码\test4.dsp

     文件        516  2013-03-26 19:03  代码\test4.dsw

     文件      58368  2013-05-21 20:25  代码\test4.ncb

     文件      48640  2013-05-21 20:25  代码\test4.opt

     文件       1431  2013-05-21 20:25  代码\test4.plg

     目录          0  2013-05-21 20:25  代码\Debug

     目录          0  2013-05-21 20:25  代码

     文件        140  2013-05-21 20:29  操作方法.txt

     文件     145920  2013-08-07 22:19  实验一实验报告.doc

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

              5241803                    17


评论

共有 条评论