实现矩形在窗口内沿着水平线匀速移动
/*
*double.c
*Thisisasimpledoublebufferedprogram.
*Pressingtheleftmousebuttonrotatestherectangle.
*Pressingtherightmousebuttonstopstherotation.
*/
/*#include<GL/glut.h>
#include<stdlib.h>
staticGLfloatspin=0.0;
voiddisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
//glRotatef(spin,0.0,0.0,1.0);
glTranslatef(spin,0.0,0.0);
glColor3f(1.0,1.0,1.0);
glRectf(-10.0,-10.0,10.0,10.0);
glPopMatrix();
glutSwapBuffers();
}
voidspinDisplay(void)
{
spin=spin+0.5;//控制平移的速度
if(spin>360.0)
spin=spin-360.0;
glutPostRedisplay();
}
voidinit(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
}
voidreshape(intw,inth)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0);/*函数voidglOrtho(left,right,bottom,top,near,far):
设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;*/
/*glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
voidmouse(intbutton,intstate,intx,inty)
{
switch(button){
caseGLUT_LEFT_BUTTON:
if(state==GLUT_DOWN)
glutIdleFunc(spinDisplay);
break;
caseGLUT_MIDDLE_BUTTON:
caseGLUT_RIGHT_BUTTON:
if(state==GLUT_DOWN)
glutIdleFunc(NULL);
break;
default:
break;
}
}
intmain(intargc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
return0;/*ANSICrequiresmaintoreturnint.*/
3、已知某三角形的三顶点坐标为{50.0,25.0},{150.0,25.0},{100.0,100.0}。
要求:(1)创建一个长宽分别为600、600的窗口,窗口的左上角位于屏幕坐标(100,100)处。(提示:请试着修改gluOrtho2D函数参数,使得绘制的三角形尽可能居中显示)
代码如下:
#include<GL/glut.h>
#include<stdlib.h>
voidinit(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
}
voiddraw_triangle(void)
{
glBegin(GL_LINE_LOOP);
glVertex2f(0.0,25.0);
glVertex2f(25.0,-25.0);
glVertex2f(-25.0,-25.0);
glEnd();
}
voiddisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glLoadIdentity();
glColor3f(1.0,1.0,1.0);
draw_triangle();
glEnable(GL_LINE_STIPPLE);
glLineStipple(1,0xF0F0);
glLoadIdentity();
glTranslatef(-20.0,0.0,0.0);
draw_triangle();
glLineStipple(1,0xF00F);
glLoadIdentity();
glScalef(1.5,0.5,1.0);
draw_triangle();
glLineStipple(1,0x8888);
glLoadIdentity();
glRotatef(90.0,0.0,0.0,1.0);
draw_triangle();
glDisable(GL_LINE_STIPPLE);
glFlush();
}
voidreshape(intw,inth)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
//glViewport(w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
gluOrtho2D(-200.0,200.0,-200.0*(GLfloat)h/(GLfloat)w,
200.0*(GLfloat)h/(GLfloat)w);//决定显示世界窗口中的那一部分内容,使用世界左边表示(左,右,下,上)
else
gluOrtho2D(-200.0*(GLfloat)w/(GLfloat)h,
200.0*(GLfloat)w/(GLfloat)h,-200.0,200.0);
glMatrixMode(GL_MODELVIEW);
}
intmain(intargc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(600,600);//创建一个长宽分别为600、600的窗口,
glutInitWindowPosition(100,100);//窗口的左上角位于屏幕坐标(100,100)处。
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return0;
}
运行结果为:
}
分享到:
相关推荐
(系统会自己调高积分,我重新改成5分啦!...大学计算机图形学课程作业代码,使用双缓冲技术,实现平移、比例、旋转、反射错切变换。自用,代码完整。打包下载,可直接运行。c/c++语言MFC实现。支持vs。
TEXT ("图形变换"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, hmenu, hInstance, NULL ); ShowWindow (hwnd, iCmdShow) ; UpdateWindow ...
计算机图形学实验,几何变换的源码,基于Visual Studio 2005平台,VC++语言,使用OpenGL库。
江苏科技大学计科专业计算机图形学实验图形的几何变换代码,列表应该还有实验报告
(系统会自己调分,我手动...大学计算机图形学课程作业代码,使用用斜等测图的绘制方法绘制三维几何图形,实现平移、比例、旋转、反射错切等变换。自用,代码完整。打包下载,可直接运行。c/c++语言MFC实现。支持vs。
计算机图形学编程源码\计算机图形学——几何变换源代码.txt
计算机图形学二维图形的变换 计算机图形学二维图形的变换 TC
图形学几何变换算法,参照书本的算法,原创
计算机图形学(第三版)三维空间的几何变换代码:代码运行软件版本(Visual Studio 2015)【软件安装教程百度“VS2015安装+OpenGL环境配置及测试”】 参考书本代码227~229页代码,稍作修改,实现三维图形平移,旋转...
1.OpenGL初识 2.直线生成算法 3.图形几何变换 4.线段裁剪算法 5.曲线生成算法 6.真实感图形算法 包含升一升二部分
这是计算机图形学的实习的作业,实现了计算机图形学中的许多经典算法,采用vc6.0的MFC框架编写。
1.定义三维直线,进行几何变换(如平移,投影变换) 2.窗口进行裁剪(算法自选) 3.窗口视区变换并显示(裁剪前,裁剪后截图) 4.程序要有注释
交互式画直线,圆,椭圆(DDA等各种算法都有) 交互式二维图形填充 (扫描线转换,区域填充3种算法)...看大家都在找计算机图形学大作业 就把我以前做的作业发给大家看看 有完整的代码 不懂得可以联系我 帮你解答!^-^
2.1.3 几何变换程序设计案例 2.4 平面曲线图 2.4.1 正叶线 2.4.2 正叶线蝴蝶结 2.5 平面曲线程序设计案例 2.6 课后练习 第3 章 图形交互技术 3.1 用户接口设计 3.2 逻辑输入设备与输入处理 3.2.1 逻辑输入设备 .。。...
在VC++6.0下绘制直线的DDA算法,BERHAM算法,中点算法,绘制圆和椭圆的各种算法,填充的4种算法,裁剪的各种算法,以及贝塞尔曲线的绘制和实时动画。
计算机图形学几何变换代码 环境为c+++opengl
图形学二维变换算法程序,矩阵的变换,C语言实现
计算机图形学作业题 1. 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等)加属性参数 (颜色、线型等)来表示图形称图形的参数表示;枚举出图形中所有的点称图形的点阵 表示,简称为图像(数字图像...
2022年山东科技大学计算机图形学实验代码(基础代码)(可直接运行) 包括: 绘制任意斜率的直线段 交互式绘制多边形 二维几何变换 直线段裁剪 立方体线框模型正交投影 立方体线框模型透视投影 动态三视图 动态绘制...
①可以免费下载。 ②下载后,请自行解压。 ③解压后,在解压文件中,找到末尾标记为sln的...④若运行失败,请根据问题在CSDN中查,并对visual stdio 2022进行修改,本代码绝对没问题,本人亲测。 ⑤祝大家学有所成!