资源简介
大学计算机图形学课程作业代码示例,主要使用opengl库,c++语言编写,包含完整的工程文件,带有部分注释。
代码片段和文件信息
#include
#include
#include
#include
#include
#include “glm.h“
/* defines */
#define T(x) model->triangles[(x)]
/* enums */
enum { X Y Z W }; /* elements of a vertex */
/* typedefs */
/* _GLMnode: general purpose node
*/
typedef struct _GLMnode {
GLuint index;
GLboolean averaged;
struct _GLMnode* next;
} GLMnode;
/* private functions */
/* _glmMax: returns the maximum of two floats */
static GLfloat
_glmMax(GLfloat a GLfloat b)
{
if (a > b)
return a;
return b;
}
/* _glmAbs: returns the absolute value of a float */
static GLfloat
_glmAbs(GLfloat f)
{
if (f < 0)
return -f;
return f;
}
/* _glmDot: compute the dot product of two vectors
*
* u - array of 3 GLfloats (GLfloat u[3])
* v - array of 3 GLfloats (GLfloat v[3])
*/
static GLfloat
_glmDot(GLfloat* u GLfloat* v)
{
assert(u);
assert(v);
/* compute the dot product */
return u[X] * v[X] + u[Y] * v[Y] + u[Z] * v[Z];
}
/* _glmCross: compute the cross product of two vectors
*
* u - array of 3 GLfloats (GLfloat u[3])
* v - array of 3 GLfloats (GLfloat v[3])
* n - array of 3 GLfloats (GLfloat n[3]) to return the cross product in
*/
static GLvoid
_glmCross(GLfloat* u GLfloat* v GLfloat* n)
{
assert(u);
assert(v);
assert(n);
/* compute the cross product (u x v for right-handed [ccw]) */
n[X] = u[Y] * v[Z] - u[Z] * v[Y];
n[Y] = u[Z] * v[X] - u[X] * v[Z];
n[Z] = u[X] * v[Y] - u[Y] * v[X];
}
/* _glmNormalize: normalize a vector
*
* n - array of 3 GLfloats (GLfloat n[3]) to be normalized
*/
static GLvoid
_glmNormalize(GLfloat* n)
{
GLfloat l;
assert(n);
/* normalize */
l = (GLfloat)sqrt(n[X] * n[X] + n[Y] * n[Y] + n[Z] * n[Z]);
n[0] /= l;
n[1] /= l;
n[2] /= l;
}
/* _glmEqual: compares two vectors and returns GL_TRUE if they are
* equal (within a certain threshold) or GL_FALSE if not. An epsilon
* that works fairly well is 0.000001.
*
* u - array of 3 GLfloats (GLfloat u[3])
* v - array of 3 GLfloats (GLfloat v[3])
*/
static GLboolean
_glmEqual(GLfloat* u GLfloat* v GLfloat epsilon)
{
if (_glmAbs(u[0] - v[0]) < epsilon &&
_glmAbs(u[1] - v[1]) < epsilon &&
_glmAbs(u[2] - v[2]) < epsilon)
{
return GL_TRUE;
}
return GL_FALSE;
}
/* _glmWeldVectors: eliminate (weld) vectors that are within an
* epsilon of each other.
*
* vectors - array of GLfloat[3]‘s to be welded
* numvectors - number of GLfloat[3]‘s in vectors
* epsilon - maximum difference between vectors
*
*/
GLfloat*
_glmWeldVectors(GLfloat* vectors GLuint* numvectors GLfloat epsilon)
{
GLfloat* copies;
GLuint copied;
GLuint i j;
copies = (GLfloat*)malloc(sizeof(GLfloat) * 3 * (*numvectors + 1));
memcpy(copies vectors (sizeof(GLfloat) * 3 * (*numvectors + 1)));
copied = 1;
for (i = 1; i <= *numvectors; i++) {
for (j = 1; j <= copied; j++) {
if (_glmEqual(&vectors[3 * i] &copies[3 * j] epsilon)) {
goto duplic
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 97727 2015-06-23 00:52 201206020004金玮 第一次.docx
文件 431268 2015-06-23 08:36 201206020004金玮 第三次.docx
文件 163344 2015-06-23 00:51 201206020004金玮 第二次.docx
目录 0 2015-06-23 08:36 experi3\
目录 0 2015-06-22 20:16 experi3\Debug\
文件 166400 2015-06-23 08:34 experi3\Debug\experi3.exe
文件 778996 2015-06-23 08:34 experi3\Debug\experi3.ilk
文件 1362944 2015-06-23 08:34 experi3\Debug\experi3.pdb
目录 0 2015-06-22 20:16 experi3\experi3\
文件 33030144 2015-06-23 08:36 experi3\experi3.sdf
文件 888 2015-06-16 11:56 experi3\experi3.sln
文件 31744 2015-06-23 08:36 experi3\experi3.v11.suo
文件 786450 2015-06-22 18:53 experi3\experi3\bubble.tga
文件 196626 2015-04-21 23:49 experi3\experi3\butterfly.tga
目录 0 2015-06-22 20:16 experi3\experi3\data\
文件 2280355 2009-05-02 12:49 experi3\experi3\data\al_sword.obj
文件 2497386 2008-12-18 05:11 experi3\experi3\data\bunny.obj
文件 6754463 2009-03-14 18:01 experi3\experi3\data\couple.obj
文件 1761993 2008-03-14 17:39 experi3\experi3\data\dog.obj
文件 1758059 2008-01-07 18:15 experi3\experi3\data\elk.obj
文件 4585181 2009-01-07 14:11 experi3\experi3\data\fandisk1.obj
文件 4795045 2009-01-24 13:33 experi3\experi3\data\female.obj
文件 1702375 2008-03-14 18:04 experi3\experi3\data\frog.obj
文件 1769311 2008-01-06 00:36 experi3\experi3\data\gargoyle.obj
文件 729270 2009-05-05 09:53 experi3\experi3\data\kiss.obj
文件 2597280 2008-03-16 15:17 experi3\experi3\data\memento.obj
文件 2190908 2008-01-06 22:00 experi3\experi3\data\neptune.obj
文件 5163055 2009-05-06 12:10 experi3\experi3\data\sculpture.obj
文件 220609 2015-04-13 11:36 experi3\experi3\data\teapot.obj
文件 53 2015-06-21 15:16 experi3\experi3\data\test.obj
目录 0 2015-06-23 08:34 experi3\experi3\Debug\
............此处省略276个文件信息
- 上一篇:数据结构与算法分析.C++语言描述 第四版 源代码
- 下一篇:C++面试宝典
相关资源
- C++面试宝典
- 数据结构与算法分析.C++语言描述 第四
- VC++与JS交互源码——百度地图
- 数据结构 C++ 版 第2版 王红梅等 扫描
- 仪表控件-pc上运行(C# && C++)
- C++ Primer Plus中文版第六版 .azw3 格式
- 数据结构 C++版 第三版 教材+习题解析
- 零基础学C++第3版 (零基础学编程)
- c++多线程线程池服务端和客户端
- 数据结构与算法分析 : C++描述(第三
- VC++下的语音识别源代码
- C++面向对象程序设计教程习题解答与
- VC++远程桌面监控系统
- MFC图像处理
- 山东科技大学C++实训项目 飞机大战
- VC++深入详解(完整版)+所有源代码集
- vc2015c++安装包
- C++程序设计语言特别版题解--详细书签
- C++ GUI Qt 4编程(第二版)(中文高清
- 邓俊辉数据结构第三版c++版.pdf,高清
- 《Microsoft Visual Studio C++ 2010入门经典》
- 能对二值图像进行腐蚀、膨胀、开闭
- c++自学实践项目
- VC++图像处理程序设计PDF + 源码
- Visual C++指纹模式识别系统算法与实现
- VS2010 C++ MFC 登陆界面设计
- OBJ 模型文件读取显示 基于OpenGL MFC界
- VC++2015,32位,64位组件运行库
- 《C++程序设计教程(第二版)》钱能
- 扫雷小游戏 完整源码
评论
共有 条评论