计算机图形学实验报告.docx
- 文档编号:12537613
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:11
- 大小:87.14KB
计算机图形学实验报告.docx
《计算机图形学实验报告.docx》由会员分享,可在线阅读,更多相关《计算机图形学实验报告.docx(11页珍藏版)》请在冰点文库上搜索。
计算机图形学实验报告
计算机图形学实验报告
班级2011010
专业地理信息系统
组别
组员杜方浩201101016
陈群201101019
李帅201101015
华北水利水电学院资源与环境学院GIS教研室
实验一
基本图形的生成和几何变换算法实现
实验目的:
本次实验内容是应用C#来实现基本图形的生成,以及实现基本图形的几何变换,通过这次实验来认识C#的基本语法,锻炼动手操作能力。
实验原理:
(1)调用DrawLines可以实现直线的绘制;调用DrawPolygon可以实现多边形的绘制;调用DrawRectangle可以实现矩形的绘制。
(2)然后运用矩阵变换进行图形的变换
a、b、d、e控制比例、旋转、对称、错切等的变换;c、f控制投影变换;g、h控制图形的比例变换;i控制图形的整体变换。
本实验通过矩阵
对三角形进行沿X方向扩大原来的2倍,沿Y方向扩大原来的3倍。
实验代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsFormsApplication35
{
publicpartialclassForm1:
Form
{
int[,]a=newint[,]{{30,10,1},{15,70,1},{70,70,1}};
int[,]b=newint[,]{{2,0,0},{0,3,0},{0,0,1,}};
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
privatevoidForm1_Click(objectsender,EventArgse)
{
Graphicsg;
g=this.CreateGraphics();
Penblackpen=newPen(Color.Black,2);
Point[]point=
{
newPoint(a[0,0],a[0,1]),
newPoint(a[1,0],a[1,1]),
newPoint(a[2,0],a[2,1])
};
g.DrawPolygon(blackpen,point);
intd;
for(inti=0;i<3;i++)
{
for(intj=0;j<3;j++)
{
d=0;
for(intk=0;k<3;k++)
{
d+=a[i,k]*b[k,j];
}
a[i,j]=d;
}
}
g.DrawPolygon(blackpen,point);
}
}
}
实验结果:
小组分工:
程序的伪代码的编写由陈群负责
程序的源代码编写由李帅负责。
程序的调试与纠错由杜方浩负责。
性能分析及心得:
运行过程中出现了一些问题,经过细心和耐心的调试终于使程序正常运行且运行良好,有毅力会使我学习更好。
本次实验指导教师评语及成绩:
评语:
成绩:
指导教师签名:
批阅日期:
实验二
折线的分段抛物线插值
实验目的:
1.掌握C#软件的用法。
2.学习折线的分段抛物线插值算法。
实验原理:
拉格朗日中值定理又称拉氏定理,是罗尔中值定理的推广,同时也是柯西中值定理的特殊情形。
如果函数f(x)在(a,b)上可导,[a,b]上连续,则必有一ξ∈(a,b),使得 f'(ξ)*(b-a)=f(b)-f(a)
拉格朗日中值定理的几何意义
f(x)在(a,b)上可导,[a,b]上连续是拉格朗日中值定理成立的充分条件。
实验代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsApplication4
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
privatevoidForm1_Paint(objectsender,PaintEventArgse)
{
PenredPen=newPen(Color.Red,3);
PengreenPen=newPen(Color.Green,3);
Point[]curvePoints=
{
newPoint(50,250),
newPoint(100,25),
newPoint(200,250),
newPoint(250,50),
newPoint(300,75),
newPoint(350,200),
newPoint(400,150)
};
e.Graphics.DrawLines(redPen,curvePoints);
e.Graphics.DrawCurve(greenPen,curvePoints);
}
}
}
实验结果:
小组分工:
程序的伪代码的编写由李帅。
程序的源代码编写由杜方浩。
程序的调试与纠错由陈群。
性能分析及心得:
该算法能够实现折线的抛物线的插值算法,并且简单明了。
通过这次实验,不但让我们学到了知识以及掌握了查阅资料的方法,也加强了同学们之间的团结合作关系。
本次实验指导教师评语及成绩:
评语:
成绩:
指导教师签名:
批阅日期:
实验三
基于OpenGL的简单几何造型
实验目的:
学会使用OpenGL编写一些基本的程序,以实现一些简单几何造型。
实验原理:
利用OpenGL中所包含的一些绘制图形的程序,来编写所要实现的图形的代码,从而实现几何造型。
实验代码:
#include
voiddisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(1.0,1.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0);
glutWireCube(0.5);
glutSwapBuffers();
}
voidreshape(intw,inth)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-4.0,4.0,-4.0,4.0,-4.0,4.0);
}
voidinit()
{
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(1.0,0.5,0.0);
}
intmain(intargc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("cube");
glutReshapeFunc(reshape);
glutDisplayFunc(display);
init();
glutMainLoop();
}
实验结果:
小组分工:
程序的伪代码的编写由杜方浩。
程序的源代码编写由陈群。
程序的调试与纠错由李帅。
性能分析及心得:
性能良好,但还有待提高,OpenGL软件好神奇,我非常感兴趣,为此做好充分的预习,多试验,不灰心
本次实验指导教师评语及成绩:
评语:
成绩:
指导教师签名:
批阅日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 实验 报告