资源简介
山大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
相关资源
- 计算机图形学 边填充算法实现代码
- OpenGL参考手册
- 计算机图形学课设 画板
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 简易绘图程序(计算机图形学课程设
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 图形学集成程序dda、中点算法、多边
- 计算机图形实验(哈尔滨工程大学)
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 计算机图形学-全.rar
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- 警察抓小偷游戏 x86版
评论
共有 条评论