《计算机图形学》实验三:图形变换

news/2024/7/8 4:49:04 标签: 图形, buffer, 出版

本博客计算机图形学系列文章索引:

地址:《计算机图形学系列相关文章索引(持续更新)》


参考教材:《计算机图形学》 机械工业出版社 ,徐文鹏主编

源代码如下:

#include <tchar.h>
#include <GL/glut.h>
#include <cstdlib>

GLfloat rtri=0.0f;

//链接必要的库文件
#pragma comment( lib, "opengl32.lib" )	 
#pragma comment( lib, "glu32.lib" )	    
#pragma comment( lib, "glut32.lib" )	 

void Init(void)
{
	glClearColor(0.0f,0.0f,0.0f,0.0f);
	glShadeModel(GL_FLAT);
	glEnable(GL_DEPTH_TEST);
}

void Display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glLoadIdentity();
	//平移变换函数,Z轴负半轴平移6.0f个单位
	glTranslatef(0.0f,0.0f,-6.0f);
	//旋转变换函数,以向量(1,0,0)为轴旋转rtri度
	glRotatef(rtri,1.0f,0.0f,0.0f);
	//比例变换函数,沿X轴拉伸到原来的1.5倍  
	glScalef(1.5f,1.0f,1.0f);
	glBegin(GL_TRIANGLES);
		glColor3f(1.0f,0.0f,0.0f);
		glVertex3f(0.0f,1.0f,0.0f);
		glColor3f(0.0f,1.0f,0.0f);
		glVertex3f(-1.0f,-1.0f,1.0f);
		glColor3f(0.0f,0.0f,1.0f);
		glVertex3f(1.0f,-1.0f,1.0f);

		glColor3f(1.0f,0.0f,0.0f);
		glVertex3f(0.0f,1.0f,0.0f);
		glColor3f(0.0f,0.0f,1.0f);
		glVertex3f(1.0f,-1.0f,1.0f);
		glColor3f(0.0f,1.0f,0.0f);
		glVertex3f(1.0f,-1.0f,-1.0f);

		glColor3f(1.0f,0.0f,0.0f);
		glVertex3f(0.0f,1.0f,0.0f);
		glColor3f(0.0f,1.0f,0.0f);
		glVertex3f(1.0f,-1.0f,-1.0f);
		glColor3f(0.0f,0.5f,0.5f);
		glVertex3f(-1.0f,-1.0f,-1.0f);


		glColor3f(1.0f,0.0f,0.0f);
		glVertex3f(0.0f,1.0f,0.0f);
		glColor3f(0.0f,0.0f,1.0f);
		glVertex3f(-1.0f,-1.0f,-1.0f);
		glColor3f(0.5f,0.5f,0.0f);
		glVertex3f(-1.0f,-1.0f,1.0f);
	glEnd();
	rtri += 1.0f;
	glutSwapBuffers();		
}

void ChangeSize(GLsizei width,GLsizei height)
{
	glViewport(0,0,width,height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

}

int _tmain(int argc, _TCHAR* argv[])
{
	glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
	glutInitWindowSize(640,480);
	glutInitWindowPosition(100,100);
	glutCreateWindow("实验三:变换");
	Init();
	glutDisplayFunc(Display);
	glutReshapeFunc(ChangeSize);
	glutIdleFunc(Display);
    glutMainLoop();
	return 0;
}

实验结果如下,图中是一个金字塔的形状,并且沿Z轴在不停旋转。



http://www.niftyadmin.cn/n/1332085.html

相关文章

骚操作 !IDEA 防止写代码沉迷插件 !

原文地址&#xff1a;juejin.cn/post/6914083794806898695图片前言当初年少懵懂&#xff0c;那年夏天填志愿选专业&#xff0c;父母听其他长辈说选择计算机专业好。从那以后&#xff0c;我的身上就有了计院深深的烙印。从寝室到机房&#xff0c;从机房到图书馆&#xff0c;C、C…

《计算机图形学》实验四:裁剪

本博客计算机图形学系列文章索引&#xff1a; 地址&#xff1a;《计算机图形学系列相关文章索引&#xff08;持续更新&#xff09;》 参考教材&#xff1a;《计算机图形学》 机械工业出版社 &#xff0c;徐文鹏主编 实验内容&#xff1a;利用Cohen-Sutherland编码裁剪算法&…

中点画直线算法

本博客计算机图形学系列文章索引&#xff1a; 地址&#xff1a;《计算机图形学系列相关文章索引&#xff08;持续更新&#xff09;》 中点画直线算法的具体内容不再给出&#xff0c;想知道的参考教材。 我们的教材是&#xff1a;《计算机图形学》 机械工业出版社 &#xff0c;…

PageHelper 被曝有性能问题,你中招了吗?

点击上方蓝色字体&#xff0c;选择“设置星标”优质文章&#xff0c;第一时间送达作者&#xff1a;岁月安然blog.csdn.net/baidu_38083619/article/details/82463058前因项目一直使用的是PageHelper实现分页功能&#xff0c;项目前期数据量较少一直没有什么问题。随着业务扩增&…

Windows的窗口类风格、鼠标光标风格

一、窗口类 一个窗口类不是一个C类&#xff0c;而是早于并存在于C之外的窗口专有的类。窗口类的作用就像一个模板&#xff0c;可以由此创建其他的窗口&#xff0c;并可共享某些特征&#xff0c;包括下面的特征&#xff1a; 1、类风格&#xff1a;包括能给与窗口的微小的特征。…

面试官问:为什么 SpringBoot 的 jar 可以直接运行?

点击上方 果汁简历 &#xff0c;选择“置顶公众号”优质文章&#xff0c;第一时间送达来源&#xff1a;http://fangjian0423.github.io/SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包。在pom文件里加入这个插件即可&#xff1a;<buil…

软件设计师考试资料大放送,持续更新中……(历年试题分析与解析。。。)!!!

本人参加了2011年下半年的软件设计师考试&#xff0c;当时考试的时候收集了一些资料。现在成绩出来了&#xff0c;就把这些资料共享出来&#xff0c;供各位需要的下载。 几个比较重要的网址&#xff1a; 中国计算机技术职业资格网&#xff1a;http://www.rkb.gov.cn/ 资料存在了…

MySQL用得好好的,为什么要转ES?

来源&#xff1a;京东技术&#xff08;ID: jingdongjishu&#xff09;京东到家订单中心系统业务中&#xff0c;无论是外部商家的订单生产&#xff0c;或是内部上下游系统的依赖&#xff0c;订单查询的调用量都非常大&#xff0c;造成了订单数据读多写少的情况。我们把订单数据存…