资源简介
计算机图形学的作业,内含实验报告、源代码以及模型数据,供参考。
代码片段和文件信息
/* Rotating cube with viewer movement from Chapter 5 */
/* Cube definition and display similar to rotating--cube program */
/* We use the Lookat function in the display callback to point
the viewer whose position can be altered by the xXyYz and Z keys.
The perspective view is set in the reshape callback */
#include
#ifdef __APPLE__
#include
#else
#include
#include < fstream >
#include < string>
#endif
#define N 2000
GLfloat vertices[N][3];
GLfloat normals[N][3];
GLfloat colors[N][3] = { { 1.00.00.0 }{ 1.0 0.5 0.0 }{ 1.00.01.0 }
{ 0.01.00.0 }{ 1.01.00.0 }{ 0.01.01.0 }
};
GLint nFaces = 0 nVertices = 0 nEdges = 0;
GLint c = 2;
void drawHorse(int n)//绘图函数
{
for (int a = 0; a < n; a++)
{
int point1 = normals[a][0];
int point2 = normals[a][1];
int point3 = normals[a][2];
glShadeModel(GL_SMOOTH);
glBegin(GL_POLYGON);//画出一个像素片
glColor3fv(colors[point1]);
glVertex3fv(vertices[point1]);
glColor3fv(colors[point2]);
glVertex3fv(vertices[point2]);
glColor3fv(colors[point3]);
glVertex3fv(vertices[point3]);
glEnd();
}
}
void load_off(char* filename)
{
std::ifstream fin;
fin.open(filename);
std::string off;
std::getline(fin off);//读入首行字符串“OFF“
fin >> nVertices >> nFaces >> nEdges; //读入点、面、边数目
double x y z;
for (int i = 0; i {
fin >> x >> y >> z; //逐行读入顶点坐标;
vertices[i][0] = x; /*修改此处代码,将坐标保存到外部变量中*/
vertices[i][1] = y;
vertices[i][2] = z;
colors[i][0] = colors[i % 6][0];
colors[i][1] = colors[i % 6][1];
colors[i][2] = colors[i % 6][2];
}
int n vid1 vid2 vid3;
for (int i = 0; i {
fin >> n >> vid1 >> vid2 >> vid3; //逐行读入面的顶点序列;
normals[i][0] = vid1; /*修改此处代码,将面列表保存到外部变量中*/
normals[i][1] = vid2;
normals[i][2] = vid3;
}
fin.close();
}
static GLfloat theta[] = {0.00.00.0};
static GLdouble viewer[] = { 0.0 0.0 -10.0 }; /* initial viewer location */
static GLint axis = 0;
static GLfloat X = 1.0 Y = 1.0 Z = 1.0;
static GLfloat level = 0 vertical = 0;
int xRotate yRotate zRotate;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
/* Update viewer position in modelview matrix */
glLoadIdentity();//放到原点
glPushMatrix();
gluLookAt(viewer[0] viewer[1] viewer[2] 0.0 0.0 0.0 0.0 1.0 -1.0);//相机位置
glTranslatef(level vertical 0.0);
glScalef(XYZ);
if(xRotate = 1)
glRotatef(theta[0] 1.0 0.0 0.0);//绕x轴旋转
// drawHorse(nFaces);
glRotatef(theta[1] 0.0 1.0 0.0);//绕y轴旋转
// drawHorse(nFaces);
glRotatef(theta[2] 0.0 0.0 1.0);//绕z轴旋转
drawHorse(nFaces);
glPopMatrix();
glFlush();
glutSwapBuffers();
}
void mouse(int btn int state int x int y)
{
if (btn == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
;
if (btn == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
;
if (btn == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN);
exit(0);
display();
}
void Specia
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5188 2016-04-04 22:49 【图形学第二次作业】22920142203912_檀锦彬_上机作业2\Source.cpp
文件 39433 2016-03-24 20:14 【图形学第二次作业】22920142203912_檀锦彬_上机作业2\horse.off
文件 673878 2016-05-28 15:45 【图形学第二次作业】22920142203912_檀锦彬_上机作业2\实验报告.docx
目录 0 2016-05-28 15:46 【图形学第二次作业】22920142203912_檀锦彬_上机作业2\
- 上一篇:关于抽象数据类型--有理数数据结构
- 下一篇:CustomPlotTest.zip
相关资源
- vs搭建OpenGL所需文件 & 简易天体运动源
- LIB3DS,OpenGL显示3DS文件
- freeglut-3.2.1.rar
- OPENGL三维绘图
- opengl开发库文件
- opengl雪花koch
- qt opengl 2d纹理到球面
- OpenGL实现机器人运动下蹲、起身、走
- OpenGL完整测试文件
- OpenGL绘制3D机器人
- 包含GlU32.Lib glut32.dll glut32.lib glut.dll
- gl/glext.h
- glutdlls37beta
- opengl所需的5个基本文件
- gltools/freeglut
- openGL中的glut库,32位和64位
- openGL期末大作业——行走的机器人
- OpenGL立方体带黑白格格纹理有光照可
- 计算机图形学OpenGL、codeblock、四连通
- opengl鼠标旋转,键盘缩放和平移
- opengl头文件glext.h
- 计算机图形学OpengL蔡士杰等译 随书代
- OPENGL室内三维效果
- YUV420在qt5下显示
- glut工具库
- 计算机图形学 交互实体模型
- OPENGL读取显示obj模型_VS2010
- 运用Opengl和C实现一个人体面部的三维
- opengl实现分形山脉
- opengl显示网格模型
评论
共有 条评论