资源简介
山大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
相关资源
- 一个OpenTK做的OpenGL纹理贴图DEMO
- opengl 三维地形模拟含纹理贴图
- 计算机图形学试验扫描线填充算法源
- 地形可视化三维可视化
- FreeImage图形库说明文档(中文版+英文
- 基于opengl的虚拟校园漫游系统
- 计算机图形学课设线画图元生成系统
- 2015年广东工业大学计算机图形学试卷
- OpenGL配置文件大全GL.H、GLAUX.H等
- OpenGL手势控制立方体旋转(代码详解
- 此程序可以读入off文件,把模型显示
- 支持opengl4.3的glew库64位
- openGL特效动画集合
- openGL漫游
- opengl 生成三维地形
- nehe-opengl源代码
- Pro OpenGL ES for iOS.epub
- OPenGL实现的虚拟校园环境漫游系统源
- opengl实现太阳系的各大行星运转动画
- Qt OpenGL 天空盒
- OPENGL绘制3D模型
- VC图形绘制程序计算机图形学
- OpenGL纹理贴图的+PPT原理介绍
- OpenGL库文件安装包
- 图形学三维变换--消隐--光照面着色
- 基于opengl的三维场景
- 计算机图形学基础课程设计
- 完整太阳系opengl
- 99273910opengl-3d-car.zip
- OpenGL_哆啦A梦环游世界
评论
共有 条评论