一、实验目的:

  • 1) 熟悉并掌握包括平移、比例、对称、旋转、错切在内的五种基本二维几何变换的原理和实现过程;
  • 2)熟悉并掌握二维符合变换的原理和实现过程;
  • 3) 掌握 OpenGL 程序关于平移、旋转、缩放、错切变换的方法;
  • 4)能够根据学习教程自行设计几何变换程序,实现特定的几何变换。

二、实验内容

共有六道题目,其中第六题是加分题。请根据给定的实验结果样例,结合参考程序设计程序,实现样例的显
示效果,把程序代码和实验截图拷贝到实验报告中。

题目 1:

设计程序实现平移变换。

  1. 在窗口中心处绘制第一个正方形(2*2 大小);
  2. 将正方形向右平移 2 个单位,向上平移 3 个单位,绘制第二个正方形;
  3. 将第一个正方形向右平移 2 个单位,绘制第三个正方形;

效果:

代码:

#include <GL/glut.h>
void init (void)
{glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);
gluOrtho2D (-5.0, 5.0, -5.0, 5.0); //设置显示的范围是 X:-5.0~5.0, Y:-5.0~5.0
glMatrixMode (GL_MODELVIEW);
}
void drawSquare(void) //绘制中心在原点,边长为 2 的正方形
{glBegin (GL_POLYGON); //顶点指定需要按逆时针方向
glVertex2f (-1.0f,-1.0f);//左下点
glVertex2f (1.0f,-1.0f);//右下点
glVertex2f (1.0f, 1.0f);//右上点
glVertex2f (-1.0f,1.0f);//左上点
glEnd ( );
}
void myDraw (void)
{
glClear (GL_COLOR_BUFFER_BIT); //清空
glLoadIdentity(); //将当前矩阵设为单位矩阵glPushMatrix();
glColor3f (1.0, 0.0, 0.0);
drawSquare();//中间红色矩形
glPopMatrix();glPushMatrix();
glTranslatef(2.0f,3.0f,0.0f);
glColor3f (0.0, 1.0, 0.0);
drawSquare(); //上面绿色矩形
glPopMatrix();glPushMatrix();
glTranslatef(2.0,0.0,0.0);
glColor3f (0.0, 0.0, 1.0);
drawSquare();//右边蓝色矩形
glFlush ( );
}
void main (int argc, char** argv){glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutInitWindowSize (600, 600);
glutCreateWindow ("几何变换函数综合示例");
init();
glutDisplayFunc (myDraw);
glutMainLoop ( );
}

题目 2:

设计程序实现旋转变换。

  1. 在窗口中心处绘制第一个正方形(2*2 大小);
  2. 将正方形向右平移 2 个单位,向上平移 3 个单位,顺时针旋转 30
    度,绘制第二个正方形;
  3. 将第一个正方形向左平移 2 个单位,向下平移 3 个单位,逆时针旋转 30 度,绘制第三个正方形;

效果:

代码:

#include <GL/glut.h>
void init (void){glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);
gluOrtho2D (-5.0, 5.0, -5.0, 5.0); //设置显示的范围是 X:-5.0~5.0, Y:-5.0~5.0
glMatrixMode (GL_MODELVIEW);
}
void drawSquare(void) //绘制中心在原点,边长为 2 的正方形
{glBegin (GL_POLYGON); //顶点指定需要按逆时针方向
glVertex2f (-1.0f,-1.0f);//左下点
glVertex2f (1.0f,-1.0f);//右下点
glVertex2f (1.0f, 1.0f);//右上点
glVertex2f (-1.0f,1.0f);//左上点
glEnd ( );
}
void myDraw (void){
glClear (GL_COLOR_BUFFER_BIT); //清空
glLoadIdentity(); //将当前矩阵设为单位矩阵glPushMatrix();
glColor3f (1.0, 0.0, 0.0);
drawSquare();//中间红色矩形
glPopMatrix();
glPushMatrix();
glTranslatef(2.0f,3.0f,0.0f);
glRotatef(-30.0,0.0,0.0,1.0);
glColor3f (0.0, 1.0, 0.0);
drawSquare(); //上面绿色矩形
glPopMatrix();
glPushMatrix();
glTranslatef(-2.0,-3.0,0.0);
glRotatef(30.0,0.0,0.0,1.0);
glColor3f (0.0, 0.0, 1.0);
drawSquare();//右边蓝色矩形
glFlush ( );
}
void main (int argc, char** argv){glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutInitWindowSize (600, 600);
glutCreateWindow ("几何变换函数综合示例");
init();
glutDisplayFunc (myDraw);
glutMainLoop ( );
}

题目 3:
设计程序实现比例变换。

  1. 在窗口中心处绘制第一个正方形(2*2 大小);

  2. 将正方形向右平移 2 个单位,向上平移 3 个单位,X 和 Z 方向保持不变,Y方向放大为原来的 1.5 倍,绘制 第二个正方形;

  3. 将第一个正方形向左平移 2 个单位,向下平移 3 个单位,Z 方向保持不变,X方向缩小为原来的 0.5 倍,Y 方向放大为原来的 1.5 倍,绘制第三个正方形;

效果:

代码:

#include <GL/glut.h>
void init (void){glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);
gluOrtho2D (-5.0, 5.0, -5.0, 5.0); //设置显示的范围是 X:-5.0~5.0, Y:-5.0~5.0
glMatrixMode (GL_MODELVIEW);
}
void drawSquare(void) //绘制中心在原点,边长为 2 的正方形
{glBegin (GL_POLYGON); //顶点指定需要按逆时针方向
glVertex2f (-1.0f,-1.0f);//左下点
glVertex2f (1.0f,-1.0f);//右下点
glVertex2f (1.0f, 1.0f);//右上点
glVertex2f (-1.0f,1.0f);//左上点
glEnd ( );
}
void myDraw (void){
glClear (GL_COLOR_BUFFER_BIT); //清空
glLoadIdentity(); //将当前矩阵设为单位矩阵
glPushMatrix();
glColor3f (1.0, 0.0, 0.0);
drawSquare();//中间红色矩形
glPopMatrix();glPushMatrix();
glTranslatef(2.0f,3.0f,0.0f);
glScalef(1.0,1.5,1.0);
glColor3f (0.0, 1.0, 0.0);
drawSquare(); //上面绿色矩形
glPopMatrix();glPushMatrix();
glTranslatef(-2.0,-3.0,0.0);
glScalef(0.5,1.5,1.0);
glColor3f (0.0, 0.0, 1.0);
drawSquare();//右边蓝色矩形
glFlush ( );
}
void main (int argc, char** argv){glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutInitWindowSize (600, 600);
glutCreateWindow ("几何变换函数综合示例");
init();
glutDisplayFunc (myDraw);
glutMainLoop ( );
}

题目 4:
利用旋转变换,设计程序实现三个菱形显示。菱形短轴半径设为 1,长轴半径设为 2。(注意:变换顺序不同,会得出不同的变换式样)

效果:

代码:

#include <GL/glut.h>
void init (void){glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);
gluOrtho2D (-5.0, 5.0, -5.0, 5.0); //设置显示的范围是 X:-5.0~5.0, Y:-5.0~5.0
glMatrixMode (GL_MODELVIEW);
}
void drawSquare(void) //绘制中心在原点,边长为 2 的正方形
{glBegin (GL_POLYGON); //顶点指定需要按逆时针方向
glVertex2f (0.0f,2.0f);
glVertex2f (0.5f,1.0f);
glVertex2f (0.0f,0.0f);//长轴半径设为 2
glVertex2f (-0.5f,1.0f);//短轴半径设为 1
glVertex2f (0.0f,2.0f);
glEnd ( );
}
void myDraw (void){
glClear (GL_COLOR_BUFFER_BIT); //清空
glLoadIdentity(); //将当前矩阵设为单位矩阵glPushMatrix();
glColor3f (1.0, 0.0, 0.0);
drawSquare();//中间红色矩形
glPopMatrix();glPushMatrix();
glRotatef(120.0,0.0,0.0,1.0);
glPushMatrix();
glColor3f (0.0, 1.0, 0.0);
drawSquare(); //左边绿色矩形glPopMatrix();
glRotatef(120.0,0.0,0.0,1.0);
glColor3f (0.0, 0.0, 1.0);
drawSquare();//右边蓝色矩形
glFlush ( );
}
void main (int argc, char** argv){glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutInitWindowSize (600, 600);
glutCreateWindow ("菱形复合变换");
init();
glutDisplayFunc (myDraw);
glutMainLoop ( );
}

题目 5:
画人头怪(每一个矩形大小为 2*2)
注意:

  1. 尖嘴的部分是通过对矩形做比例变换和平移获得的,不是画了一个菱形。
  2. 坠饰可以加一点逐步放大的效果。
    效果:

代码:

#include <GL/glut.h>
#include <math.h>
float R1 = 1;
float R2 = 0.65;
float R3 = 0.5;
int i;
int j;
void init (void)
{glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);
gluOrtho2D (-18.0, 18.0, -18.0, 18.0); //设置显示的范围是 X:-5.0~5.0, Y:-5.0~5.0
glMatrixMode (GL_MODELVIEW);
}
void drawSquare(void) //绘制中心在原点,边长为 2 的正方形
{glBegin (GL_POLYGON); //顶点指定需要按逆时针方向glVertex2f (-1.0f,-1.0f);//左下点glVertex2f (1.0f,-1.0f);//右下点glVertex2f (1.0f, 1.0f);//右上点glVertex2f (-1.0f,1.0f);//左上点glEnd ( );
}
void drawCicle1(float R1 ){int n=3600;float PI=3.1415926f; //定义 πglBegin(GL_POLYGON);//定义绘制模式for (i=1;i<n;i++){glVertex2f(R1*cos(2*PI*i/n)+2.5,R1*sin(2*PI*i/n)-2.5); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();glBegin(GL_POLYGON);for (i = 1; i < n; i++){glVertex2f(R1*cos(2*PI*i/n)-4.5,R1*sin(2*PI*i/n)-2.5); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();}
void drawCicle2(float R2 ){int n=3600;float PI=3.1415926f; //定义 πfor(j = 0;j<7;j++){glBegin(GL_POLYGON);//定义绘制模式for (i = 1; i < n; i++){glVertex2f(R2*cos(2*PI*i/n)-7,R2*sin(2*PI*i/n)-3.65-j*1.3); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();}for(j = 0;j<7;j++){glBegin(GL_POLYGON);//定义绘制模式for (i = 1; i < n; i++){glVertex2f(R2*cos(2*PI*i/n)+5,R2*sin(2*PI*i/n)-3.65-j*1.3); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();}for(j = 0;j<7;j++){glBegin(GL_POLYGON);//定义绘制模式for (i = 1; i < n; i++){glVertex2f(R2*cos(2*PI*i/n)-9.7,R2*sin(2*PI*i/n)-1.65-j*1.3); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();}for(j = 0;j<7;j++){glBegin(GL_POLYGON);//定义绘制模式for (i = 1; i < n; i++){glVertex2f(R2*cos(2*PI*i/n)+7.7,R2*sin(2*PI*i/n)-1.65-j*1.3); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();}for(j = 0;j<7;j++){glBegin(GL_POLYGON);//定义绘制模式for (i = 1; i < n; i++){glVertex2f(R2*cos(2*PI*i/n)-13.7,R2*sin(2*PI*i/n)+0.35-j*1.3); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();}for(j = 0;j<7;j++){glBegin(GL_POLYGON);//定义绘制模式for (i = 1; i < n; i++){glVertex2f(R2*cos(2*PI*i/n)+11.7,R2*sin(2*PI*i/n)+0.35-j*1.3); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();}
}
void drawCicle3(float R3 ){int n=3600;float PI=3.1415926f; //定义 πglBegin(GL_POLYGON);//定义绘制模式for (i = 1; i < n; i++){glVertex2f(R3*cos(2*PI*i/n)-2.5,R3*sin(2*PI*i/n)-7.5); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();glBegin(GL_POLYGON);for (i = 1; i < n; i++){glVertex2f(R3*cos(2*PI*i/n)+0.5,R3*sin(2*PI*i/n)-7.5); //设定点坐标,共有 3600 个点,用来绘制凸多边形}glEnd();
}
void myDraw (void)//先画矩形再画圆形
{ int i, j;float r = 0.05;float g = 0.27;float b = 0.34;int x = -1, y = -7;glClear(GL_COLOR_BUFFER_BIT); //清空glLoadIdentity(); //将当前矩阵设为单位矩阵//中间矩形glPushMatrix();glColor3f(1.0, 1.0, 0.0);drawSquare(); //黄色矩形glPopMatrix();//三角形嘴巴for (i = 1; i < 10; i++) {glPushMatrix();glTranslatef(-1 + i * 0.0025, -7 - i * 0.2, 0.0);glColor3f(r, g, b);glScalef(1 - 0.1 * i, 1 - 0.1 * i, 1);drawSquare();glPopMatrix();}//脸for (i = 0; i < 10; i++) {for (j = -i; j <= i; j += 2) {glPushMatrix();glTranslatef(x + j + 0.05 * j, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();}if(i==7){glPushMatrix();glTranslatef(-10 - 0.3-0.15, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();glPushMatrix();glTranslatef(8 + 0.3+0.15, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();}if(i == 8){glPushMatrix();glTranslatef(-11-0.5, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();glPushMatrix();glTranslatef(9 +0.5, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();}if (i == 9) {glPushMatrix();glTranslatef(-12-0.5, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();glPushMatrix();glTranslatef(10 +0.5, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();glPushMatrix();glTranslatef(-14 - 0.3, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();glPushMatrix();glTranslatef(12 + 0.3, y + i, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();}r += 0.1;g += 0.2;b += 0.3;if (r > 1.0) r -= 0.23f;if (g > 1.0) g -= 0.45f;if (b > 1.0) b -= 0.67f;}//眼睛glColor4f(0, 0, 0, 0); //定义颜色glBegin(GL_POLYGON);//定义绘制模式drawCicle1(R1);//胡子glColor4f(1, 0, 0, 0); //定义颜色glBegin(GL_POLYGON);//定义绘制模式drawCicle2(R2);glFlush ( );//鼻子glColor4f(0, 0, 1, 0); //定义颜色glBegin(GL_POLYGON);//定义绘制模式drawCicle3(R3);glFlush ( );
}
void main (int argc, char** argv)
{glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutInitWindowSize (600, 600);
glutCreateWindow ("人头怪");
init();
glutDisplayFunc (myDraw);
glutMainLoop ( );
}

题目 6:加分题

包含但不限于以下图片,通过复合变换,实现其形状

博主实现的效果:

代码:

#include <GL/glut.h>
#include <math.h>
float R1 = 1;
float R2 = 0.65;
float R3 = 0.5;
int i;
int j;
void init (void)
{glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);
gluOrtho2D (-18.0, 18.0, -18.0, 18.0); //设置显示的范围是 X:-5.0~5.0, Y:-5.0~5.0
glMatrixMode (GL_MODELVIEW);
}
void drawSquare(void) //绘制中心在原点,边长为 2 的正方形
{glBegin (GL_POLYGON); //顶点指定需要按逆时针方向glVertex2f (-1.0f,-1.0f);//左下点glVertex2f (1.0f,-1.0f);//右下点glVertex2f (1.0f, 1.0f);//右上点glVertex2f (-1.0f,1.0f);//左上点glEnd ( );
}
void myDraw (void)
{ int i, j;float r = 0.05;float g = 0.27;float b = 0.34;int x = -1, y = -7;glClear(GL_COLOR_BUFFER_BIT); //清空glLoadIdentity(); //将当前矩阵设为单位矩阵//中间矩形glPushMatrix();glColor3f(1.0, 1.0, 0.0);drawSquare(); glPopMatrix();for (i = 0; i < 10; i++) {for (j = -i; j <= i; j += 2) {glPushMatrix();glTranslatef(x + j + 1 * j, y + i +j*2, 0.0);glColor3f(r, g, b);drawSquare();glPopMatrix();}r += 0.1;g += 0.2;b += 0.3;if (r > 1.0) r -= 0.23f;if (g > 1.0) g -= 0.45f;if (b > 1.0) b -= 0.67f;}glFlush ( );
}
void main (int argc, char** argv)
{glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutInitWindowSize (600, 600);
glutCreateWindow ("跑酷楼梯");
init();
glutDisplayFunc (myDraw);
glutMainLoop ( );
}

三、主要函数说明:

1、glMatrixMode():

  • 这个函数其实就是对接下来要做什么进行一下声明,也就是在要做下一步之前告诉计算机我要对“什么”进行操作了,这个“什么”在
    glMatrixMode 的“()”里的参数:GL_PROJECTION,GL_MODELVIEW 和 GL_TEXTURE。

  • GL_PROJECTION:投影,就是要对投影相关进行操作,也就是把物体投影到一个平面上,就像我们照相 一样,把 3 维物体投到 2
    维的平面上。这样,接下来的语句可以是跟透视相关的函数,比如 glFrustum()或 gluPerspective();

  • GL_MODELVIEW:对模型视景的操作,接下来的语句描绘一个以模型为基础的适应,这样来设置参数, 接下来用到的就是像
    gluLookAt()这样的函数;

  • GL_TEXTURE:就是对纹理相关进行操作;

顺便说下,OpenGL 里面的操作,很多是基于对矩阵的操作的,比如位移,旋转,缩放,所以,这里其实说的规范一点就是glMatrixMode是用来指定哪一个矩阵是当前矩阵,而它的参数代表要操作的目标,

  • GL_PROJECTION是对投影矩阵操作,
  • GL_MODELVIEW 是对模型视景矩阵操作,
  • GL_TEXTURE 是对纹理矩阵进行随后的操作。

2、glLoadIdentity():
在进行变换前把当前矩阵设置为单位矩阵。

进行模型和视图变换,主要涉及到三个函数:

  • glTranslate():平移变换函数。
  • glTranslatef(GLfloat x,GLfloat y,GLfloat z); 函数功能:
  • 沿 X 轴正方向平移 x 个单位(x 是有符号数) 沿 Y 轴正方向平移 y 个单位(y 是有符号数) 沿 Z 轴正方向平移 z个单位(z 是有符号数)
  • 这里的 x,y,z 是相对于 glOrtho2D()函数给出的视窗显示范围对应设定的。

例如,这里给出 x的范围是 [-5, 5],那么 x 的值就不能大于 5 或者小于-5,否则物体就会移出视窗口,进入不可见区域。

  • glRotate():旋转变换函数。
  • glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z);
  • 先解释一下旋转方向,做(0,0,0)到(x,y,z)的向量,用右手握住这条向量,大拇指指向向量的正方向,四指环绕的方向就是旋转的方向;
  • 例如:

glRotatef (xrot , 1.0f, 0.0f, 0.0f); // 绕 X 轴旋转 glRotatef (yrot ,
0.0f, 1.0f, 0.0f); // 绕 Y 轴旋转

  • 函数功能:以点(0,0,0)到点(x,y,z)的直线为轴,逆时针旋转 angle 角度;

  • glScale():缩放函数。

  • glScalef(GLfloat sx, GLfloat sy, GLfloat sz);

  • 函数功能:模型沿着 x,y,z 轴方向进行比例缩放,缩放比分别为 sx,sy,sz。sx,sy,sz 都是大于 0 的 数字。

  • 如果在某个方向是保持大小不变,则需把对应的缩放系数设置为 1,不能设置为 0。

3、glPushMatrix()和 glPopMatrix(): 矩阵堆栈操作函数。

  • 就是数据结构中的堆栈操作问题,先进后出。
  • glPushMatrix 函数把当前状态复制一份,放入堆栈中,
  • glPopMatrix 函数从堆栈中取出放在里面的状态。

我们在进行矩阵操作时,有可能需要先复制保存某个矩阵,过一段时间再恢复它。

  • 当我们需要保存时,调 用 glPushMatrix 函数,它相当于把矩阵(相当于盘子)放到堆栈上。
  • 当需要恢复最近一次的保存时,调用 glPopMatrix 函数,它相当于把矩阵从堆栈上取下。
  • 先堆起来的盘子后取出。
  • 当你做了一些移动或旋转等变换后,使用 glPushMatrix();
    OpenGL 会把这个变换后的位置和角度保存起来。
  • 然后你再随便做第二次移动或旋转变换,再用 glPopMatrix();
    OpenGL 就把刚刚保存的那个位置和角度恢复。
  • 比如:
glLoadIdentity();
glTranslatef(1,0,0);//向右移动(1,0,0)
glPushMatrix();//保存当前位置 glTranslatef(0,1,0);//现在是(1,1,0)了
glPopMatrix();//这样,现在又回到(1,0,0)了
glPushMatrix();//复制保存的就是它之前的矩阵状态,可以包括平移、旋转、比例、颜色在内的所有变换状态。

1、glPushMatrix()函数需要放在画图函数之前(这里是 drawSqure()),放在之后就没有用了,因为之前设置的矩阵状态都丢失了。

2、 OpenGL 规定堆栈的容量至少可以容纳 32 个矩阵,某些 OpenGL 实现中,堆栈的容量实际上超过了 32 个。
因此不必担心矩阵的容量问题。

4、glOrtho2D(): 负责使用什么样的视景体来截取图像,设置显示窗口坐标范围。

“ 我深怕自己本非美玉,故而不敢加以辛苦琢磨。却又半信自己是块美玉,固又不肯庸庸碌碌与瓦砾为伍。于是我渐渐的脱离凡尘,疏远世人。结果便是任愤懑与羞恨,日益助长内心怯懦的自尊心。——《山月记》 ”

《计算机图形学》实验 3相关推荐

  1. 华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...

    华北电力大学计算机图形学实验报告分析 科 技 学 院 课程设计(综合实验)报告 ( 2013 -- 2014 年度第 2 学期) 实验名称 OpenGL基本图元绘制实验 课程名称 计算机图形学 | | ...

  2. 计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...

    PAGE 32 PAGE 7 计算机图形学 实验报告 班级 计算机工硕班 学号 2011220456 姓名 王泽晶 实验一:直线段扫描转换 实验目的 通过本次试验,学生可以掌握直线段的扫描转换算法及其 ...

  3. 计算机图形学画圆vc代码,计算机图形学实验--完整版-带结果--vc++实现.doc

    计算机图形学实验--完整版-带结果--vc实现 计算机图形学实验报告 信息学院计算机专业 20081060183 周建明 综括: 利用计算机编程语言绘制图形,主要实现以下内容: (1).中点算法生成任 ...

  4. 如何用计算机画立方体,画立方体-计算机图形学实验.doc

    画立方体-计算机图形学实验.doc (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机图形学实验--画立方体(通过视向变换等)具 ...

  5. 计算机图形学真实感显示代码,计算机图形学实验 - 真实感图形场景的生成

    <计算机图形学实验 - 真实感图形场景的生成>由会员分享,可在线阅读,更多相关<计算机图形学实验 - 真实感图形场景的生成(4页珍藏版)>请在人人文库网上搜索. 1.计算机图形 ...

  6. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  7. 计算机图形学实验——二维卡通人物交互

    计算机图形学实验1.2卡通人物交互 OpenGL卡通人物交互 基础"图元"绘制 OpenGL拾取物体 反走样 略提反走样问题 OpenGL实现二维反走样 放缩.旋转和拖动 小结 O ...

  8. OpenGL南邮计算机图形学实验报告二——两个纹理的渐变变换和移动

    OpenGL南邮计算机图形学实验报告二--两个纹理的渐变变换和移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 ...

  9. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...

    计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...

  10. 计算机图形学实验一 《MFC绘图基础》

    计算机图形学实验一 <MFC绘图基础> 视频讲解:无没啥讲的,有一些东西在实验二视频提了一下 一.MFC介绍 1.基本介绍: MFC是微软公司提供的一个类库,以C++类的形式封装了Wind ...

最新文章

  1. Socket拉屎模型之二--实践篇
  2. 机器学习:论相关(一)
  3. c打开指定路径文件_C++ 读取指定路径下所有的文件 (C++ get the list of files in a directory)...
  4. 响应式布局方法的方法
  5. jQuery -- 光阴似箭(五):AJAX 方法
  6. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解
  7. python爬虫之多线程、多进程爬虫_python 多线程,多进程,高效爬虫
  8. CAD如何导出天正各版本DWG图纸?CAD图形导出教程
  9. Excel中阳历转阴历
  10. 执行retn、call、leave指令的时候,esp和eip的变化情况
  11. 12-搜索前端开发-按分类搜索
  12. 调用百度地图API实现动态走航路线图
  13. IT(计算机/软件/互联网)专业词汇宝典
  14. java poi 段落行间距_java - Apache poi XWPF Paragraph行间距 - 堆栈内存溢出
  15. 哔哩哔哩查看视频av号
  16. CAN总线协议报文浅析
  17. 最流行的微服务应用框架有哪些
  18. 【开源电机驱动】符号-幅值驱动方式
  19. 麦克风离计算机主机多远,唱歌的时候,嘴离麦克风多远最好听?
  20. 倚天剑与屠龙刀java_菜鸟入门 java语言学习六大要点

热门文章

  1. vs2019创建webapi
  2. mysql 表里restrict_数据库的三种状态RESTRICT、QUIESCE和SUSPEND(一)
  3. XP框架开启debug模式_王国风云3控制台大全(debug_mode)
  4. 武汉大学计算机学院周浩,武汉大学电子信息学院导师介绍:周浩
  5. ECMAJavaScript基础
  6. 发现Firefox没有Chrome快?使用 Mactype+关闭硬件加速 可能会拖慢Firefox的渲染速度...
  7. JVM内存分配机制详解
  8. 办公室职位职衔职务英语词汇(zt)
  9. 3DMAX 6 游戏特效制作
  10. 解决安装wordpress出现此网页包含重定向循环