OpenGL入门示例8——图形平移、旋转、缩放
#include<GL/glut.h>
#include <windows.h>static GLfloat spin=0.0; //旋转量
static GLfloat move=0.0; //平移量
static GLfloat size=1.0; //缩放量void init(void)
{glClearColor(0.0,0.0,0.0,0.0); //指定清除颜色(黑色),即背景颜色glShadeModel(GL_FLAT);
}void display(void)
{glClear(GL_COLOR_BUFFER_BIT); //清除所有的像素glPushMatrix();glTranslatef(move,0,0); //移动,参数含义(x轴位移,y轴位移,z轴位移)glRotatef(spin,0,0,1); //旋转,参数含义(旋转量,x轴,y轴,z轴)glScalef(size,size,1); //缩放,参数含义(x轴倍数,y轴倍数,z轴倍数)glColor3f(0.0,1.0,0.0); //绘制颜色RGBglRectf(-25.0,-25.0,25.0,25.0); //绘制矩形glPopMatrix();glutSwapBuffers();
}void reshape(int w,int h)
{glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0);
}void spinAndSizeDisplay()
{spin>360?spin-=360:spin+=2;size>2?size-=2:size+=0.003;glutPostRedisplay(); //标记当前窗口需要重绘,否则不会旋转Sleep(10);
}void moveDisplay()
{move=move>20?move-=20:move+=1;glutPostRedisplay(); //标记当前窗口需要重绘,否则不会旋转Sleep(10);
}int main(int argc,char* argv[])
{glutInit(&argc,argv); //初始化GLUT并处理命令行参数glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); //指定模式:双缓存;RGB模式glutInitWindowSize(250,250); //指定窗口大小(像素)glutInitWindowPosition(300,200); //指定窗口左上角在屏幕上的位置glutCreateWindow(argv[0]); //使用OpenGL场景创建一个窗口,参数为窗口名称init(); //调用初始化函数glutDisplayFunc(display); //显示glutReshapeFunc(reshape); //重绘glutIdleFunc(spinAndSizeDisplay); //旋转&缩放//glutIdleFunc(moveDisplay); //移动(与上边函数只能有一个有效)glutMainLoop(); //进入主循环并处理事件,此时创建的所有窗口都会显示出来,被渲染到这些窗口中的内容也将显示出来,程序开始处理事件,注册的显示回调函数被触发return 0; //ANSI C要求函数main()返回一个int值
}
效果图:
OpenGL入门示例8——图形平移、旋转、缩放相关推荐
- Unity 触屏手势控制Camera平移旋转缩放
Unity 触屏手势控制Camera平移旋转缩放 实现思路 单点触屏,位移增量控制相机平移: 两点触屏,两点位移控制相机前后移动(缩放):两点中一点不位移控制相机绕点旋转: 实现需要的API Touc ...
- webgl图形平移、缩放、旋转
文章目录 前言 平移 图示 代码示例 缩放 图示 代码示例 旋转 公式推导 代码示例 总结 前言 在webgl中将图形进行平移.旋转.缩放的操作称为变换或仿射变换,图形的仿射变换涉及到顶点位置的修改, ...
- 三维空间中的几何变换-平移旋转缩放
前言 前段时间由于项目需要,深入学习了下图形几何变换,主要是绕任意轴旋转部分(其他的已有一定基础),现记录学习笔记. 文章内容部分引用并参考了下面的博客: http://netclass.csu.ed ...
- Unity矩阵平移旋转缩放Matrix4x4
Unity中的矩阵(Matrix4x4) 最近在研究帧同步定点数物理系统中需要自定义定点数矩阵,所以在这里分享下基础的矩阵案例旋转.平移.缩放.(注意这里本文中的transform组件式基于unity ...
- OpenGL实验2:图形的旋转、平移、缩放
之后有空再补一下具体的细节理论叭(可能正好当作自己复习的资料啦,
- OpenGL中的平移旋转缩放
1.opengl中缩放使用的函数是glScalef 其原型为void glScalef(GLfloat x, GLfloat y, GLfloat z); 该函数表示模型在各轴上进行扩大和缩 ...
- 初学计算机图形学——OpenGL实现二维图形平移,旋转(不使用opengl自带的函数,齐次方程实现)
要求:1.给定窗口中绘制坐标系 2.给定坐标系内绘制三角形 3.完成平移.旋转等变换后的三角形绘制 4.采用OpenGL绘制 代码: #include<windows.h> #includ ...
- canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)...
[下篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- 三维坐标 偏转_三维坐标变换原理-平移, 旋转, 缩放
给定一个二维点(x, y),那么形如(kx, ky, k)的所有三元组就都是等价的,它们就是这个点的齐次坐标(homogeneous).齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指 ...
最新文章
- 存储过程结果更改编码_Docker安装Minio存储服务器详解
- 一个关于native sql的程序
- Spring Boot 开发web 项目
- 「Python」python调用单个C++文件生成的动态库(.so)Part I
- Gradle入门:集成测试
- mysql 官方镜像_运行官方mysql 镜像
- uni-app微信小程序uni.navigateTo跳转无效问题;记录一次uni-app页面跳转无效,来回跳转问题;wx.navigateTo ,跳转超过10次怎么点不动的解决办法。
- 项目开发容易出错情况统计
- html区块位置怎么设置,HTML 区块
- RabbitMQ SSL安全认证
- 电磁学基础——数学场论
- 11款程序员实用工具,老少皆宜,你一定用得上!
- 湖南省第1届职业技能大赛(经历、总结)
- (高小德用车)高仿滴滴/快的应用源代码
- DAEMON 中的 SPTD 和 发生sptd.sys 错误的处理办法~
- Java递归解压zip压缩包
- docker(五):更新容器映射端口
- 笔记本无线和有线的MAC地址修改
- mac苹果电脑删除顽固残留软件图标
- 计算机网络常见的协议之ICMP协议
热门文章
- 猿创征文|国产数据库[StarRocks]实战学习
- 大学计算机基础知识电子版,大学计算机基础考试知识点(完整版).pdf
- input tabIndex说明
- matlab抗混叠滤波器,音频抗混叠滤波器设计
- getchar() 和 getch()
- C#WinForm应用程序——简易摇号系统
- vr虚拟现实技术介绍,vr虚拟现实技术未来前景
- Excel VBA:设置单元格边框
- js正则表达式的使用:
- 为什么有些应用程序愿意采用不可靠的UDP,而不愿意采用可靠的TCP?试解释为什么ARP高速缓存每存入一个项目就要设置10~20分钟的超时计时器。这个时间设置的太大或太小会出现什么问题?