二维图形平移变换c语言程序,[转载]计算机图形学Opengl实现二维图形的平移、旋转、缩放复合变换...
参考课堂教学中关于模型变化的讲解,编写对一个三角形分别实现平移、缩放、旋转等变化的源码及效果图。请以该例为蓝本,实现3题的代码编写。
如下的几幅图,第一幅就是在给出的代码部分进行修改,将GL_FLAT修改为GL_SMOOTH就可以表现出如下的第一幅图的混合色效果。第二幅图中表现得是经过几种分开的变换的效果,分别为平移、旋转、缩放和原图,其中也是使用了混合颜色的方式进行填充的。为了使几个转换之间相互不影响,应注意每一个变换之前要加上这样的一行代码函数:glLoadIdentity ();实现的核心代码在第二幅图下面附上。第三幅图中即为要求的完成几种变换的复合变换,这里要注意的为要函数调用采用的为列向量的方式,所以在变换时要注意变换的实际顺序与代码的书写顺序为相反的,所以这里如果不能正确的调用函数,就会出现问题。当然要求尽量调整裁剪窗口使其图形尽量显示在视口的中心,所以这里要调整gluOrtho2D(-200.0,250.0,-100.0*(GLfloat)h/(GLfloat)w,200.0*(GLfloat)h/(GLfloat)w);这样基本上就显示在中间位置了,也就是第三幅图中的效果。详细代码和效果附下:
第一幅图
第二幅图
【注】核心代码,其他不同代码如下面附代码的有色部分:
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glLoadIdentity ();
glColor3f (1.0, 1.0, 1.0);
glTranslatef(-100.0,-50.0,1.0);
draw_triangle ();
glLoadIdentity ();
glTranslatef (0.0, 100.0, 1.0);
draw_triangle ();
glLoadIdentity ();
glRotatef (90.0, 0.0, 0.0, 1.0);
draw_triangle ();
glLoadIdentity ();
glScalef (0.5, 0.5, 1.0);
draw_triangle ();
glFlush ();
}
第三幅图
【注】第三幅图效果的实现代码:
#include
#include
#include
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_SMOOTH);
}
void draw_triangle(void)
{
glShadeModel(GL_SMOOTH);
glColor3f(0.2,0.7,0.30);
glBegin (GL_TRIANGLES);//画出三角形,为混合色填充方式
glVertex2f(50.0, 25.0);
glColor3f(0.4,0.5,0.60);
glVertex2f(150.0, 25.0);
glColor3f(0.9,0.7,0.8);
glVertex2f(100.0, 100.0);
glEnd();
}
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glLoadIdentity ();
glColor3f (1.0, 1.0, 1.0);
glTranslatef(-100.0,-50.0,1.0);
draw_triangle ();
glLoadIdentity ();
glTranslatef (0.0, 100.0, 1.0);
glRotatef (90.0, 0.0, 0.0, 1.0);
glScalef (0.5, 0.5, 1.0);
draw_triangle ();//经过三种变换后画出图形
glFlush ();
}
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
if (w <= h)
gluOrtho2D (-200.0, 250.0, -100.0*(GLfloat)h/(GLfloat)w,
200.0*(GLfloat)h/(GLfloat)w);//调整裁剪窗口
else
gluOrtho2D (-200.0*(GLfloat)w/(GLfloat)h,
250.0*(GLfloat)w/(GLfloat)h, -50.0, 200.0);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (600, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
二维图形平移变换c语言程序,[转载]计算机图形学Opengl实现二维图形的平移、旋转、缩放复合变换...相关推荐
- c语言二维图形变换程序,【计算机图形学】3-2 二维几何变换根本代码
[计算机图形学]3-2 二维几何变换基本代码 返回目录 基本理论参见:[计算机图形学]3-1 二维几何变换基本理论 注:这里不考虑插值的问题. 全部的代码都在https://github.com/Cy ...
- 初学计算机图形学——OpenGL实现二维图形平移,旋转(不使用opengl自带的函数,齐次方程实现)
要求:1.给定窗口中绘制坐标系 2.给定坐标系内绘制三角形 3.完成平移.旋转等变换后的三角形绘制 4.采用OpenGL绘制 代码: #include<windows.h> #includ ...
- 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...
计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...
- 计算机图形学三维变换论文,计算机图形学 第5章 三维图形生成和变换技术
计算机图形学 第5章 三维图形生成和变换技术 (63页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 第五章 目录第五章 三维图形生成和变 ...
- 计算机图形学 实验8 《复杂图形绘制-Bezier曲面及其纹理》
计算机图形学 实验8 <复杂图形绘制-Bezier曲面及其纹理> 一.实验目的 学习样条曲面绘制技术. 二.实验内容 1.绘制Bezier曲面: 2.将纹理图像映射到曲面. 三.实验方法 ...
- 计算机图形学 实验7 《复杂图形绘制-Bezier曲线与Hermite曲线》
计算机图形学 实验7 <复杂图形绘制-Bezier曲线与Hermite曲线> 一.实验目的 学习样条曲线的绘制. 二.实验内容 1.绘制Bezier曲线: 2.绘制Hermite曲线. 三 ...
- OpenGL南邮计算机图形学实验报告二——两个纹理的渐变变换和移动
OpenGL南邮计算机图形学实验报告二--两个纹理的渐变变换和移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 ...
- 计算机图形学实验一(二维图形绘制)
计算机图形学实验一(二维图形绘制) 一.实验内容 二.实验环境 三.问题分析 四.算法设计 五.源代码 六.程序运行结果 一.实验内容 (1)绘制金刚石图案 金刚石图案的成图规则是:把一个圆周等分成n ...
- 【C语言简单说】二:第一个C语言程序详解(3)
如有错误请给与纠正- 注:注意我们每一行代码后面的分号表示我们一句代码的结束,就像我们在写文字的时候的标点符号,一个句号表示一句话的结尾. 上一个教程只说明了第一个C语言程序源码中的main(其实等于 ...
最新文章
- OpenSceneGraph 笔记--如何导出三角形数据
- 【PHP7源码分析】PHP7到底有多快,基准测试与特性分析告诉你
- 三分钟学会css3中的flexbox布局
- Ubuntu中apache+php+sql搭建/卸载
- 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★
- LeetCode 中等难度 92. 反转链表 II解题思路
- NYOJ 801 Haffman编码
- 浅谈:Android应用清理内存
- es6学习笔记(一)
- .NET Core on K8S 学习与实践系列文章索引 (更新至20191126)
- 其实企业的C++人最清楚企业的问题
- 三星 android 截屏,三星S7怎么截屏 3种三星S7截图方法
- html-webpack-template, 一个更好的html web service插件
- python编写财务软件_python 与财务
- 施乐700彩机服务器维修,施乐700DCP彩色数码复印机维修手册:700dcp_sc_ver1.1_chap05(208页)-原创力文档...
- 卸载ie8的一些方法
- mysql 无法创建sock,mysql.sock无法打开的问题
- unity 粒子 运动模糊_使用模糊库使用粒子模拟景深
- nyoj-975-关于521
- SQL 校验身份证格式