计算机图形学课程设计报告交互式绘图系统

合集下载

计算机图形学_ 计算机图形学概论_13 交互式计算机图形处理系统_

计算机图形学_ 计算机图形学概论_13 交互式计算机图形处理系统_

交互式计算机图形处理系统
交互式= Computer + 人
高质量的计算机图形离不开高性能的计算机图形硬件设备。

一个图形系统通常由图形处理器、图形输入设备和输出设备构成
一、图形输入设备的发展
第一阶段:控制开关、穿孔纸等
第二阶段:键盘、光笔
第三阶段:二维定位设备,如鼠标、数字化仪、跟踪球、触摸屏、操纵杆、扫描仪等
第四阶段:三维输入设备,如三维鼠标、空间球、数据手套第五阶段:智能人机接口:用户的手势、表情、语音等
事实上最常用和最成功的图形输入设备就是:
键盘和鼠标1
、键盘和鼠标
2、光笔(light pen)
光笔是一种检测装置,它直接在屏幕上操作,拾取位置。

光笔有三个基本功能:定位、拾取和笔画跟踪。

3、触摸屏(touch screen)这种装置以手指触摸的方式选择屏幕位置。

当用手指或者小杆触摸屏幕时,触点位置便以光学的、电子的或声音的方式记录下来。

根据触摸方式的不同,触摸屏分为以下几种类型:▪红外线式触摸屏
▪电阻式触摸屏▪电容式触摸屏▪声波触摸屏大部分的工业用触摸屏和廉价的手机iphone,Ipad
电子书
5、操纵杆(joystick)
操纵杆是由一根小的垂直杠杆组成的可摇动装置,该杠杆装配在一个其四周可移动的底座上用来控制屏幕光标。

计算机图形学实验报告_2

计算机图形学实验报告_2

计算机图形学实验报告学号:********姓名:班级:计算机 2班指导老师:***2010.6.19实验一、Windows 图形程序设计基础1、实验目的1)学习理解Win32 应用程序设计的基本知识(SDK 编程);2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。

4)学习MFC 类库的概念与结构;5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框);6)学习使用MFC 的图形编程。

2、实验内容1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。

(可选任务)2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,Thisis my first SDI Application"。

(必选任务)3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。

定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。

3、实验过程1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档;2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,Thisis my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制;3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。

4、实验结果正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。

交互式图形系统的设计与实现

交互式图形系统的设计与实现

交互式图形系统的设计与实现Interact Design and Implementation of Graphic Systems引言随着计算机科学技术的发展,交互式图形系统的设计与实现逐渐成为了计算机科学领域中不可或缺的一部分。

交互式图形系统的设计与实现涉及到了图形学、计算机视觉、计算机图形学、图像处理等多个方面的知识,而如何将这些知识融合在一起,设计并实现交互式图形系统,是一个值得深入探讨的问题。

交互式图形系统的基本原理交互式图形系统的基本原理是通过计算机的硬件和软件技术,将人类的视觉感知和计算机的图形处理能力结合在一起。

具体而言,它包括以下几个方面:一、图形显示原理:交互式图形系统的设计与实现是建立在图形学的基础之上的。

图形学是研究如何将二维或三维物体的模型表示在计算机上的技术,包括点、线、面等基本元素的表示方法、坐标系的构建、变换等内容。

而图形显示原理是图形学的一项关键技术,其主要目的是将三维模型转化为二维平面上的图形进行显示。

二、图形处理算法:图形处理算法是实现交互式图形系统的另外一个重要组成部分。

它主要涉及到数学、物理及计算方法等多个领域的知识,如多项式曲线、Bezier曲线、深度缓存技术等等。

这些算法主要用于模拟物理世界中的光照、阴影、反射等等现象。

三、用户界面设计:交互式图形系统的设计与实现中,用户界面设计也是至关重要的一步。

用户界面设计需要遵循用户习惯,简单易用。

它还需要考虑用户的不同需求和背景,设计出适合不同用户的图形界面。

交互式图形系统的设计与实现设计和实现交互式图形系统是需要一定的技术和方法。

以下是实现交互式图形系统的主要步骤:一、选择合适的图形库:选择合适的图形库对于设计和实现交互式图形系统十分重要。

常用的图形库有OpenGL、DirectX等,我们可以根据实际需求选择合适的图形库。

二、数据结构设计:在设计交互式图形系统时,需要合适的数据结构对图形进行存储和处理。

常用的数据结构有线性表、树、图、堆栈等等。

计算机图形学课程设计完本

计算机图形学课程设计完本

1中文摘要本次课程设计采用OpenGL来完成。

OpenGL是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。

OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

本次课程设计是在win7系统下VC++6.0中的win32环境中,通过使用OpenGL所提供的标准库函数,综合图形学里的坐标转换,投影变换,光照以及纹理等知识,实现一个简单的太阳系的运行状况。

该系统仅做演示使用,将只包括太阳,地球与月亮,并且不保证相关数据的设定准确性。

目录一、课程设计任务及要求 (1)二、需求分析 (1)三、系统设计 (1)四、详细设计 (3)4.1 初始化的设定 (3)4.2 光源的位置与观察位置的设定 (4)4.3 纹理映射的设置 (5)4.4 各星球球体的绘制 (7)4.5 星球公转轨道 (9)4.6 人机交互式的实现 (10)五、运行调试与分析讨论 (12)5.1 程序运行截图 (12)5.2 结果分析 (13)六、设计体会与小结 (14)七、参考文献 (16)一、课程设计任务及要求1.利用OpenGL创建太阳,地球,月亮三个球体。

2. 实现“月亮绕着地球转,地球绕着太阳转”。

3. 为太阳,地球,月亮附上不同的纹理。

4. 具有较好的动画效果,消除闪烁现象。

5. 其他功能的添加。

二、需求分析本次课程设计使用的编译软件为Visual C++ 6.0。

设计中通过调用OpenGL函数库以来完成太阳,月亮,地球的球体绘制与纹理的加载,通过矩阵的变换以实现星球的运动效果。

从而模拟出太阳系的运行效果动画。

在之后,加入星球的轨道轨迹,使得模拟系统3D效果更加明显。

并加入人机交互操作。

通过“q,w,e,s,a,d”键来调整观察视角,可以实现全方位对此系统进行观察,使系统具有一定的可操作性。

三、系统设计本次课题为:实现太阳系运行动画。

系统设计步骤为:1.太阳,地球,月亮三个球体的创建。

计算机图形学课程设计报告交互式绘图系统

计算机图形学课程设计报告交互式绘图系统

课程设计报告课程名称计算机图形学课题名称交互式绘图系统专业计算机科学与技术班级学号姓名指导教师刘长松曹燚2012年10 月9 日湖南工程学院课程设计任务书课程名称计算机图形学课题交互式绘图系统专业班级学生姓名学号指导老师刘长松曹燚审批任务书下达日期2012年9月15 日任务完成日期2012 年10月9 日一、设计内容与设计要求1.设计内容:用橡皮法实现交互式绘图系统。

2.设计要求:在屏幕上可以选择不同的命令、来实现不同基本图形的绘制。

完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,且要有比较友好的界面。

3.算法提示:首先在屏幕上画出菜单和绘图窗口,显示鼠标。

点击相应菜单,点击鼠标,移动鼠标,获取鼠标移动相对位置,画出相应图形。

相关变量定义:#define _MOUSE鼠标#define CIRCLE 1圆#define LINE 2直线#define RECTANGLE 3矩形#include "stdio.h"#include "string.h"#include"graphics.h"#include"math.h"#include <dos.h>union REGS inreg,outreg;struct SREGS sr;相关函数:void meun(int x,int y,char *str){setcolor(8);outtextxy(x+5,28,str);setcolor(15);line(x,22,x,40);line(x,22,y,22);setcolor(8);line(x,40,y,40);line(y,22,y,40);}void drawwindows()画窗口{setbkcolor(7); /*7*/setcolor(8);rectangle(0,20,640,460);rectangle(0,0,640,20);setfillstyle(1,1);floodfill(1,1,8);rectangle(0,460,640,480);setfillstyle(1,15);floodfill(1,461,8);setcolor(RED);outtextxy(10,468,"Finished By XuYuanFei."); setcolor(15);line(0,41,640,41);line(0,459,640,459);setcolor(8);line(0,42,640,42);setcolor(15);rectangle(610,3,630,17);setfillstyle(1,7);floodfill(611,4,15);setcolor(8);line(610,17,630,17);line(630,3,630,17);line(611,4,628,16);line(611,16,628,4);rectangle(2,44,635,459);setcolor(15);rectangle(3,45,634,458);line(611,3,628,15);line(611,15,628,3);meun(5,55,"line");meun(65,165,"rectangle");meun(175,250,"circle");meun(260,330,"Bezer");meun(340,400,"Cut");}int _cut()裁剪void mycircle(double x,double y,double r)画圆{double i;for(i=0.0;i<360.0;i=i+4)line(x+r*cos((i+1)/360*3.1415*2),y+r*sin((i+1)/360*3.1415*2),x+r*cos((i+4.0)/360*3.1415*2),y+ r*sin((i+4.0)/360*3.1415*2));}void _Bezer(int a[3],int b[3],int m)Beizier曲线void DisplayMouse()显示鼠标{inreg.x.ax=1;int86(0x33,&inreg,&outreg);}void CloseMouse()关闭鼠标{inreg.x.ax=2;int86(0x33,&inreg,&outreg);}union REGS DisplayMouseStatus()显示鼠标状态{inreg.x.ax=3;int86(0x33,&inreg,&outreg);return outreg;}void GetMouseXY(int *x,int *y)得到鼠标位置{DisplayMouse();outreg=DisplayMouseStatus();*x=outreg.x.cx;*y=outreg.x.dx;}响应相应函数void _mytreat(int oldx,int oldy,int x,int y){if(num==1){if(flag==LINE){line(px,py,oldx,oldy);line(px,py,x,y);}if(flag==CIRCLE){mycircle(px,py,sqrt((double)((px-oldx)*(px-oldx)+(py-oldy)*(py-oldy))));mycircle(px,py,sqrt((double)((px-x)*(px-x)+(py-y)*(py-y))));}if(flag==RECTANGLE){rectangle(px,py,oldx,oldy);rectangle(px,py,x,y);}}}二、进度安排第 3 周星期一8:00——12:00星期二8:00——12:00星期三8:00——12:00星期四8:00——12:00星期五8:00——12:00第 4 周星期一8:00——12:00附:课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分。

计算机图形学实验报告及代码

计算机图形学实验报告及代码

计算机图形学实验报告及代码第 1 章概述一、教学目标通过本章的学习,使学生能够了解计算机图形学的基本概念、研究内容;当前的发展概况;本门课程的特点和应用。

二、教学要求1.了解计算机图形学的概念和研究内容;2.了解本门课程的发展概况。

三、教学内容提要1. 计算机图形学的研究内容2. 计算机图形学发展概况3. 计算机图形学特点和应用4. 计算机图形学当前研究的课题5. 计算机图形生成和输出的流水线四、教学重点、难点及解决方法本章将主要围绕计算机图形学的基本概念进行介绍,介绍研究内容;当前的发展概况;本门课程的特点和应用等等。

五、课时安排2学时六、教学设备多媒体七、检测教学目标实现程度的具体措施和要求通过课堂提问的方式来检测学生对基本概念的掌握程度。

八、教学内容1.1 计算机图形学的研究内容计算机图形学(Computer Graphics): 研究通过计算机将数据转换为图形,并在专用显示设备上显示的原理、方法和技术的学科。

计算机图形表现形式(1).线条式(线框架图)用线段来表现图形,容易反映客观实体的内部结构,如各类工程技术中结构图的表示,机械设计中零件结构图及电路设计中的电路原理图等。

具有面模型、色彩、浓淡和明暗层次效应,适合表现客观实体的外形或外貌,如汽车、飞机、轮船等的外形设计以及各种艺术品造型设计等。

(2).真实感面模型图形跑车靓照计算机图形分类(空间)(1).二维图形(2D):在平面坐标系中定义的图形(2).三维图形(3D):在三维坐标系中定义的图形计算机图形产生方法(1).矢量法(短折线法)任何形状的曲线都用许多首尾相连的短直线(矢量)逼近。

(2).描点法(像素点串接法)每一曲线都是由一定大小的像素点组成计算机绘图方式:(1)交互式绘图允许操作者以某种方式(对话方式或命令方式)来控制和操纵图形生成过程,使得图形可以边生成、边显示、边修改,直至符合要求为止。

如AUTOCAD等(2)被动式绘图图形在生成过程中,操作者无法对图形进行操作和控制。

计算机图形学实验报告

计算机图形学实验报告

实验结果与结论
• 在本次实验中,我们成功地实现了复杂场景的渲染,得到了具有较高真实感和视觉效果的图像。通过对比 实验前后的效果,我们发现光线追踪和着色器的运用对于提高渲染质量和效率具有重要作用。同时,我们 也发现场景图的构建和渲染脚本的编写对于实现复杂场景的渲染至关重要。此次实验不仅提高了我们对计 算机图形学原理的理解和实践能力,也为我们后续深入研究渲染引擎的实现提供了宝贵经验。
2. 通过属性设置和变换操作,实现了对图形的定 制和调整,加深了对图形属性的理解。
4. 实验的不足之处:由于时间限制,实验只涉及 了基本图形的绘制和变换,未涉及更复杂的图形 处理算法和技术,如光照、纹理映射等。需要在 后续实验中进一步学习和探索。
02
实验二:实现动画效果
实验目的
掌握动画的基本原 理和实现方法
04
实验四:渲染复杂场景
实验目的
掌握渲染复杂场景的基本流程和方法 理解光线追踪和着色器在渲染过程中的作用
熟悉渲染引擎的实现原理和技巧 提高解决实际问题的能力
实验步骤
• 准备场景文件 • 使用3D建模软件(如Blender)创建或导入场景模型,导出为常用的3D格式(如.obj或.fbx)。 • 导入场景文件 • 在渲染引擎(如Unity或Unreal Engine)中导入准备好的场景文件。 • 构建场景图 • 根据场景的层次结构和光照需求,构建场景图(Scene Graph)。 • 设置光照和材质属性 • 为场景中的物体设置光照和材质属性(如漫反射、镜面反射、透明度等)。 • 编写渲染脚本 • 使用编程语言(如C或JavaScript)编写渲染脚本,控制场景中物体的渲染顺序和逻辑。 • 运行渲染程序 • 运行渲染程序,观察渲染结果。根据效果调整光照、材质和渲染逻辑。 • 导出渲染图像 • 将渲染结果导出为图像文件(如JPEG或PNG),进行后续分析和展示。

01交互式计算机图形学系统

01交互式计算机图形学系统

图形的矢量图表示—优点
空间小
¾ 图形文件所占的空间小;
易编辑
¾ 矢量图中的各物体是独立的(以点、线、 面和体为基本构成元素,所以也称这 种图形表示为面向对象图形表示),所 以编辑修改也比较方便;
不失真
¾ 矢量图形的输出与实际显示的分辨率 无关,放大不会失真。
3
图形的矢量图表示—缺点
看起来比较抽象 图形构造比较麻烦,有些特殊效果处理比较困难 输出必须采用矢量式输出设备,不能直接使用打印机打印 要想以光栅图形显示时则需要进行某种变换,即将矢量表示
¾
字符串(String):输入一串字符。
1.4 图形硬件设备
输入设备
-键盘、鼠标、数字化仪、扫描仪等。
硬拷贝设备
-打印机、绘图仪
显示设备
-光栅扫描显示器
图形硬拷贝设备
绘图仪
¾ 滚筒式、平板式绘图仪
打印机
¾ 撞击式:行式打印机、点阵式打印机、 针式打印机(打印发票等)
¾ 非撞击式:激光打印机、喷墨打印机
编辑、修改相对更困难
¾ 点阵图中各物体的描述是混在一起的,对不同物体的 操作存在麻烦,不可能将某一个物体的所有像素都置 为零,这样会同时消除重叠的其它物体。
¾ 这个问题的解决方法就是引入存储器分块,并且在每 个分开的块上显示各自独立的物体。
放大操作会使图形失真
图形的矢量图表示
用数学方程、数学形式对图形进行描述 ¾ 通常用图形的形状参数和属性参数来表 示图形 z 形状参数指描述图形的方程或分析表 达式的系数,线段或多边形的端点坐 标等 z 属性参数包括颜色、线型等 ¾ 矢量图的关键是如何用算法及数学公式 进行描述,并且如何将之在图形显示设 备上显示出来。

计算机图形学课程设计报告

计算机图形学课程设计报告

计算机图形学课程设计报告设计课题:专业班级:学号:学生:指导教师:设计时间:中南林业科技大学涉外学院理工系计算机图形学课程设计任务书指导教师:廖宁教研室主任:2018年12月06 日注:本表下发学生一份,指导教师一份,栏目不够时请另附页。

课程设计任务书装订于设计计算说明书〔或论文〕封面之后,目录页之前。

目录一.设计目的……………………………………………………………二.设计要求……………………………………………………………1.构建根底类……………………………………………………2.构建直线类……………………………………………………3.构建变换类……………………………………………………4.构建填充类……………………………………………………5.构建光照类……………………………………………………三.开发环境…………………………………………………………四.详细设计五.源程序六.程序运行效果图七.总结设计目的▪培养对图形建模、变换、投影、消隐、光照原理的理解和应用。

▪培养图形类的编程能力。

▪培养计算机图形学应用软件开发的能力。

设计要求深入研究计算机图形学的生成原理,设计算法实现具体的类。

1.构建根底类实现CP2类绘制二维点;实现CP3类绘制三维点;实现CRGB 类处理RGB颜色;实现CVector类处理矢量。

2.构建直线类实现CLine类绘制任意斜率的直线、实现CALine类绘制任意斜率的反走样直线、实现CCLine类绘制任意斜率的颜色渐变直线、实现CACLine类绘制任意斜率的反走样颜色渐变直线。

3.构建变换类实现CTransForm完成二维和三维图形变换。

4.构建填充类实现CFill类使用有效边表算法填充多边形、实现CZBuffer类进展深度缓冲消隐,并使用Gouraud和Phong明暗处理填充图形面片。

5.构建光照类实现CLight类设置点光源、实现CMaterial类设置物体材质、实现CLighting类对物体实施光照。

计算机图形学实验及课程设计

计算机图形学实验及课程设计

实验12 颜色渐变立方体
12.1 实验目的
掌握凸多面体消隐算法。 掌握双线性颜色插值算法。 建立基本三维场景。
实验12 颜色渐变立方体
12.2 实验要求


建立三维坐标系Oxyz,原点位于屏幕客户区中 心,x轴水平向右为正,y轴铅直向上为正,z轴 垂直于屏幕指向观察者。 以原点为体心绘制透视投影立方体,立方体8 个顶点的颜色分别为黑色、白色、红色、绿色、 蓝色、黄色、品红色和青色。背景色为黑色, 如图12-1所示。
实验4 二维几何变换
4.2 实验要求
使用静态切分视图,将窗口分为左右窗格。左窗格为继承于
CFormView类的表单视图类CLeftPortion,右窗格为一般视图
类CTestView。 左窗格提供代表“图形顶点数”(4、8、16和32)、“平移变 换”(x方向和y方向)、“旋转变换”(逆时针和顺时针)和 “比例变换”(放大和缩小)的滑动条,用于控制右窗格内的 图形变化。 右窗格内以屏幕客户区中心为图形的几何中心,绘制图形顶点 数从4变化为8、16和32的正多边形。为了表达图形的旋转,多
实验8 动态三视图
8.3 效果图
多面体动态三视图的效果如图8-1所示。
图8-1 多面体动态三视图的效果图
实验9 动态绘制Bezier曲线
9.1实验目的
掌握直线的参数表示法。 掌握德卡斯特里奥算法的几何意义。 掌握绘制二维Bezier曲线的方法。
实验9 动态绘制Bezier曲线
9.2 实验要求
实验8 动态三视图
8.1实验目的
掌握主视图变换矩阵。 掌握俯视图变换矩阵。 掌握侧视图变换矩阵。 掌握斜等测图绘制方法。
实验8 动态三视图

计算机图形学课程设计-三维真实感图形设计与绘制

计算机图形学课程设计-三维真实感图形设计与绘制

计算机图形学课程设计报告一、实验题目三维真实感图形设计与绘制(1)题目容说明:本题目要求应用OpenGL的光照技术和纹理技术实现一个简单的三维真实感图形的程序设计。

具体要现功能:1)通过对话方式实现交互式设计光照模型功能。

2)实现三维模型纹理映射功能3)用鼠标跟踪球方法实现三维模型的空间旋转2)实现鼠标跟踪球方法程序二、需求分析真实感图形的设计与绘制,是计算机图形学中的一个重要研究领域,也是三维实体造型系统和特征造型系统的重要组成部分。

一般地,三维实体在计算机显示屏上有三种表现形式:简单线框图、线框消隐图和真实感图形。

其中,简单线框图能够粗略表达实体的形状,但由于简单线框图的二义性,从而导致表达其的实体形状具有不确定性。

而线框消隐图虽然能反映实体各表面间的相互遮挡关系,从而达到消除简单线框图产生的二义性的目的,但是这两者一样地只能反映实体的几何形状和实体间的相互关系,而不能反映实体表面的特征,如表面的颜色、材质、纹理等。

所以,只有真实感图形才能表现实体的这些特征,因此,在三维实体造型中,生成三维实体的光照模型,进行实体的真实感绘制与显示占有重要的地位,是很有必要的,也是我做此设计的初衷。

在设计中,我主要使用Opengl绘制真实感图形,它作为一种强大的三维图形开发工具,通过便捷的编程接口提供了处理光照和物体材质、颜色属性等通用功能。

真实感图形学是计算机图形的核心容之一,是最能直接反映图形学魅力的分支。

寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观,是图形学的一个重要研究课题。

很多自然景物难以用几何模型描述,如烟雾、植物、水波、火焰等。

本文所讨论的几种建模及绘制技术都超越了几何模型的限制,能够用简单的模型描述复杂的自然景物。

在计算机的图形设备上实现真实感图形必须完成的四个基本任务。

1. 三维场景的描述。

三维造型。

2. 将三维几何描述转换成为二维透视图。

透视变换。

3. 确定场景中的所有可见面。

计算机图形学课程设计报告简单图形的绘制-

计算机图形学课程设计报告简单图形的绘制-

《计算机图形学》课程设计报告学生姓名:学号:学院:班级:题目: 简单图形的绘制职称2015年7月1日目录目录 (I)一、选题背景 (1)二、算法设计 (2)2.1 绘制直线、圆、椭圆、抛物线 (2)2.1.1 绘制直线 (2)2.1.2 绘制圆 (2)2.1.3 绘制椭圆 (2)2.1.4 绘制抛物线 (2)2.2 三维几何变换 (2)三、程序及功能说明 (5)3.1 绘制直线、圆、椭圆、抛物线...... (5)3.1.1 绘制直线 (5)3.1.2 绘制圆 (5)3.1.3 绘制椭圆 (5)3.1.4 绘制抛物线 (6)3.2 图形的平移 (6)3.3 图形的旋转 (6)3.4 图形的缩放 (7)四、结果分析 (7)4.1 绘制直线、圆、椭圆、抛物线 (7)4.1.1 直线 (7)4.1.2 圆 (8)4.1.3 椭圆 (8)4.1.4 抛物线 (8)4.2 图形的平移 (9)4.3 图形的旋转 (10)4.4 图形的缩放 (11)五、总结 (10)六、课程设计心得体会 (14)参考文献 (15)源程序 (16)一、选题背景二、算法设计2.1 绘制直线、圆、椭圆、抛物线2.1.1 绘制直线通过两个点的坐标来绘制直线。

计算机图形学中二维图形在显示输出之前需要扫描转换,生成直线的算法一般有DDA 算法和中点算法。

2.1.2 绘制圆通过运用圆的参数方程cos ;sin x a r y b r θθ=+=+来绘制圆的图形,其中[0,2]θπ∈,(a,b )为圆心,r 为半径,运用参数方程,只需要确定半径的长度和圆心的位置,即可绘制出圆。

2.1.3 绘制椭圆通过运用椭圆的参数方程cos ;sin x a y b θθ==来绘制椭圆的图形,其中[0,2]θπ∈,是已知的变量,a ,b 分别为长半轴,短半轴,当确定a 和b 后,通过参数方程即可得到这个椭圆的方程。

2.1.4 绘制抛物线根据点绘制抛物线图像是通过拟合完成,根据三个点的坐标,通过数据拟合,得到经过这三个点的函数关系式,从而再根据这个函数关系式绘制出抛物线上其他的点,形成一条连续的抛物线;或直接根据已知函数绘制图像是通过已知函数画出图像。

交互式图形系统概述

交互式图形系统概述

数据库
图形系统功能描述
● 图形系统组成
◘ 逻辑构成 ◘ 功能构成 ◘ 功能描述 ◘ 功能描述
● 对象描述模型 ● 图形支撑软件 ● 图形的表示 ● 图形的分类 ● 图形坐标系统
• 图形软件包为用户提供建立和管理图形的各种功能。
– 这些子程序可以按照它们是否处理输出、输入、属性、变 换、观察或通用控制而分类。
• 对象描述模型描述了图形对象及它们间的相互关系,
– 简单地说,它表示生成图形对象的全部描述信息, • 对象的性质、结构和行为的所有描述信息。
• 对象描述模型
– 既可能是完全由数据刻画的; – 也可能是由数据和过程共同描述的。
• 模型中的数据包括两大类:
– 几何数据 (几何模型):描述构成图元形状及其相互关系(拓 扑关系);
• 曲面模型(Surface Model):
– 它将形体表示为面的集合,即使用多边形、曲面等 来描述对象的几何形状。 • 它是在线模型的基础上增加了面的信息。 • 可以对其进行面与面的求交线运算、隐藏面与隐 藏线的消除、绘制明暗着色图,等等。
• 缺点:面模型不能有效地表示对象的实体性质, • 面模型中的所有面未必形成一个封闭的边界,
图形系统构成分类
● 图形系统组成 • 图形显示或输出设备是计算机图形系统的基础和前提。
◘ 逻辑构成
– 早期的计算机图形学以图形显示或输出设备为重点。
◘ 功能构成
• 计算机图形软件系统则是计算机图形系统的核心,
◘ 功能描述
◘ 功能描述
● 对象描述模型
● 图形支撑软件
● 图形的表示
● 图形的分类
● 图形坐标系统
● 图形支撑软件 ● 图形的表示 ● 图形的分类 ● 图形坐标系统

计算机图形学课件第六章-交互式绘图技术

计算机图形学课件第六章-交互式绘图技术
b、在窗口内可显示结果; c、改变屏幕窗口区域、大小、位置; d、可生产弹出式或下拉式菜单对话窗。
21
形式:
①以程序库的形式向用户提供基本的窗口管理库函数, 这种类型的系统功能较简单,图形技术应用较少。
②以集成操作环境为特点的窗口系统。这种操作系统就 是以窗口形式进行各种操作,它具有统一的用户界面,并 有一套完整的软件开发工具。
无法对图形进行操作和控制。
如C语言绘图
2
在被动式绘图中,程序和图形具有相对固定的联系,
程序的直接运行结果就是某个预定的图形,操作员不 能对运行中的程序进行干预,要想改变图形必须从修 改源程序做起。即重新编辑、编译、连接、运行……。
这种工作方式对于某些方面可能是不方便的,例如 在总体设计、造型设计、外观设计以及建筑设计等场 合下,往往需要凭借直观边作设计边调整,这就需要 采用交互式绘图进行工作。
2、交互式绘图系统硬件: 除主机外,主要对的图形交互式设备就是图形输入
设备和输出设备,如键盘、鼠标、数字化仪等
7
6.3.1 构图技术
构图技术是指建立或修改物体的几何模型的技术, 它可以通过选择作图命令和指定一系列定位点进行作图。
常用构图技术有: 1、定位法:
用定位设备来确定要显示物体或字符串位置 2、约束法:
④屏幕显示和布局应美观、清楚、合理;
⑤合理安排信息在屏幕上显示顺序;
⑥显示方式一致性;
⑦合理选择文本方式和图形方式显示;
⑧使用图形、多窗口方式显示。
18
(2)屏幕显示技术
①文本式屏幕显示一般格式
a.标题引。
标题
屏幕号
b.屏幕主体
d.状态和提示行。
状态、提示行
②问答式屏幕设计

精品课件-计算机图形学-第9章 简单交互式图形系统的设计与实现

精品课件-计算机图形学-第9章 简单交互式图形系统的设计与实现
第9章 简单交互式图形系统的设计与实现
第 9 章 简单交互式图形系统的设计与实现
9.1 系统简介 9.2 系统设计与实现 习题
第9章 简单交互式图形系统的设计与实现
9.1 系统简介
9.1.1 系统用户界面 系统运行界面如图9.1所示。 本系统以Windows画板为设计原型, 在功能上,
给用户提供了画线、 框、 圆、 多边形、 三维立体、 曲线、 填充以及动画、 分形算法程序实现演示等基本 操作, 填充方式根据图形学的概念提供了两种方式, 即 多边形填充和种子填充。
向对象程序设计语言的程序设计方法都支持三种基本的 活动: 识别对象(Object)和类(Class), 描述对象和类之 间的关系, 以及通过描述每个类的功能定义对象的行为。
第9章 简单交互式图形系统的设计与实现
1. 设备环境类 CDC类封装了Windows API中用来画图的函数, 同时该类负责维护设备环境。 CClientDC 类 用 来 创 建 和 破 坏 一 个 设 备 环 境 , 它在堆栈中建立。 CWindowDC 类 维 护 窗 口 的 非 客 户 区 , 和 CClientDC类一样。 CPaintDC 类 在 构 造 函 数 中 调 用 CWnd∷BeginPaint()获得设备环境, 以便在有效的客户 区进行绘图。
第9章 简单交互式图形系统的设计与实现
图 9.1 系统运行界面
第9章 简单交互式图形系统的设计与实现
9.1.2 系统结构 本系统采用树状的层次结构进行组织(如图
9.2所示), 主要包括文档管理、 窗口管理、 图形编辑 管理三大功能模块。 其中文档管理主要完成文档的新建、 保存、 输出打印等功能; 窗口管理定义系统界面风格, 提供对画面编辑区域及工具条、 系统状态面板、 菜单 面板等的显现与隐藏的管理; 图形编辑管理模块主要用 于完成直线、 曲线、 封闭区域等的绘制、 填充、 几 何变换和三维图形的生成、 投影、 消隐及显现。

精品课件-计算机图形学-第2章 交互式图形系统

精品课件-计算机图形学-第2章 交互式图形系统

第 2 章 交互式图形系统
图 2.9 数据手套
第 2 章 交互式图形系统
9. 扫描仪 从专业工具变为家用电脑外设的最典型代表, 要数图形扫描仪。 图形扫描仪是直接把图形和图像扫描 到计算机中以像素信息进行存储的设备。 现在市面上能 见到的一般是36位或48位真彩色扫描仪, 绝大多数采用 的 固 态 器 件 是 电 荷 耦 合 器 件 (CCD-Charge Coupled Device)。 图2.10是常用图形扫描仪的模块框图。
常见的触摸屏有以下四种类型: (1) 电阻触摸屏。 (2) 光学触摸屏。 (3) 声学触摸屏。 (4) 电容触摸屏。
第 2 章 交互式图形系统
5. 数字化仪 数字化仪是一种把图形转变成计算机能接收 的数字形式的专用设备, 其基本工作原理是采用电磁感 应技术。 它通常由一块数据板和一根触笔组成。 数据 板中布满了金属栅格, 当触笔在数据板上移动时, 其正 下方的金属栅格上就会产生相应的感应电流。 根据已产 生电流的金属栅格的位置, 就可以判断出触笔当前的几 何位置。 图2.6所示的是几种常见的数字化仪。
第 2 章 交互式图形系统
图 2.2 鼠标器
第 2 章 交互式图形系统
鼠标器按其测量位移的方式可分为三大类: 1) 光电式鼠标 2) 光机式鼠标 3) 机械式鼠标
第 2 章 交互式图形系统
2. 键盘 图形学系统中的键盘中有ASCII编码键、 命 令控制键和功能键, 用以实现图形操作的某一特定功能。 字母数字键盘用作录入文本串; 键盘也能用来进行屏幕 坐标的输入、 菜单选择或图形功能选择; 功能键允许用 户以击键方式输入常用的操作命令; 而光标控制键可用 来选择被显示的对象或通过定位屏幕光标来确定坐标位 置; 数字键盘常常用来快速输入数值数据。 另外, 某些键盘上还包含了其它类型的光标定 位设备, 如跟踪球和操纵杆。 常见的标准键盘如图2.3 所示。

人机交互式图形系统

人机交互式图形系统

— 5 —
LineTo(hdc, x31, y31); MoveToEx(hdc, x21, y21, NULL); LineTo(hdc, x31, y31); break; case 10://对称变换 x11=y1; y11=x1; x21=y2; y21=x2; x31=y3; y31=x3; MoveToEx(hdc, x11, y11, NULL); LineTo(hdc, x21, y21); MoveToEx(hdc, x11, y11, NULL); LineTo(hdc, x31, y31); MoveToEx(hdc, x21, y21, NULL); LineTo(hdc, x31, y31); break; case 11://画抛物线 x11=x1+100; y11=y1; x21=x2+100; y21=y2; x31=x3+100; y31=y3; MoveToEx(hdc, x11, y11, NULL); LineTo(hdc, x21, y21); MoveToEx(hdc, x11, y11, NULL); LineTo(hdc, x31, y31);
四.程序代码清单(部分)
主要代码如下: case WM_PAINT : { RECT rect; HDC hdc; PAINTSTRUCT ps; //hdc = GetDC(hWnd); hdc = BeginPaint(hWnd, &ps); GetClientRect( hWnd, &rect); x1=100;y1=100; x2=200;y2=250; x3=300;y3=200; switch(i) { case 0: break; case 1://画直线 for(x1=-1600; x1<1600 ; x1+=0.1) { y1 = -3*(x1-300)+100; Rectangle(hdc,x1,y1,x1+2,y1+2); } break;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告
课程名称计算机图形学
课题名称交互式绘图系统
专业计算机科学与技术
班级
学号
姓名
指导教师刘长松曹燚
2012年10 月9 日
湖南工程学院
课程设计任务书
课程名称计算机图形学
课题交互式绘图系统
专业班级
学生姓名
学号
指导老师刘长松曹燚
审批
任务书下达日期2012年9月15 日任务完成日期2012 年10月9 日
一、设计内容与设计要求
1.设计内容:
用橡皮法实现交互式绘图系统。

2.设计要求:
在屏幕上可以选择不同的命令、来实现不同基本图形的绘制。

完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,且要有比较友好的界面。

3.算法提示:
首先在屏幕上画出菜单和绘图窗口,显示鼠标。

点击相应菜单,点击鼠标,移动鼠标,获取鼠标移动相对位置,画出相应图形。

相关变量定义:
#define _MOUSE鼠标#define CIRCLE 1圆
#define LINE 2直线#define RECTANGLE 3矩形#include "stdio.h" #include "string.h" #include"graphics.h"
#include"math.h"
#include <dos.h> union REGS inreg,outreg; struct SREGS sr;
相关函数:
void meun(int x,int y,char *str) {
setcolor(8);
outtextxy(x+5,28,str);
setcolor(15);
line(x,22,x,40);
line(x,22,y,22);
setcolor(8);
line(x,40,y,40);
line(y,22,y,40);
}
void drawwindows()画窗口{
setbkcolor(7); /*7*/ setcolor(8);
rectangle(0,20,640,460);
rectangle(0,0,640,20);
setfillstyle(1,1);
floodfill(1,1,8);
rectangle(0,460,640,480);
setfillstyle(1,15);
floodfill(1,461,8);
setcolor(RED);
outtextxy(10,468,"Finished By XuY uanFei."); setcolor(15);
line(0,41,640,41);
line(0,459,640,459);
setcolor(8);
line(0,42,640,42);
setcolor(15);
rectangle(610,3,630,17);
setfillstyle(1,7);
floodfill(611,4,15);
setcolor(8);
line(610,17,630,17);
line(630,3,630,17);
line(611,4,628,16);
line(611,16,628,4);
rectangle(2,44,635,459);
setcolor(15);
rectangle(3,45,634,458);
line(611,3,628,15);
line(611,15,628,3);
meun(5,55,"line");
meun(65,165,"rectangle");
meun(175,250,"circle");
meun(260,330,"Bezer");
meun(340,400,"Cut");
}
int _cut()裁剪
void mycircle(double x,double y,double r)画圆{
double i; for(i=0.0;i<360.0;i=i+4)
line(x+r*cos((i+1)/360*3.1415*2),y+r*sin((i+1)/360*3.1415*2),x+r*cos((i+4.0)/360*3.1415*2),y+r* sin((i+4.0)/360*3.1415*2));
void _Bezer(int a[3],int b[3],int m)Beizier曲线
void DisplayMouse()显示鼠标
{
inreg.x.ax=1;
int86(0x33,&inreg,&outreg);
}
void CloseMouse()关闭鼠标
{
inreg.x.ax=2;
int86(0x33,&inreg,&outreg);
}
union REGS DisplayMouseStatus()显示鼠标状态
{
inreg.x.ax=3;
int86(0x33,&inreg,&outreg);
return outreg; }
void GetMouseXY(int *x,int *y)得到鼠标位置
{
DisplayMouse();
outreg=DisplayMouseStatus();
*x=outreg.x.cx;
*y=outreg.x.dx;
}
响应相应函数
void _mytreat(int oldx,int oldy,int x,int y) {
if(num==1)
{
if(flag==LINE)
{
line(px,py,oldx,oldy);
line(px,py,x,y);
}
if(flag==CIRCLE)
{
mycircle(px,py,sqrt((double)((px-oldx)*(px-oldx)+(py-oldy)*(py-oldy))));
mycircle(px,py,sqrt((double)((px-x)*(px-x)+(py-y)*(py-y))));
}
if(flag==RECTANGLE)
{
rectangle(px,py,oldx,oldy);
rectangle(px,py,x,y);
}
}
二、进度安排
第 3 周星期一8:00——12:00
星期二8:00——12:00
星期三8:00——12:00
星期四8:00——12:00
星期五8:00——12:00
第 4 周星期一8:00——12:00
附:
课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分。

正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。

正文总字数要求在5000字以上(不含程序原代码)。

目录
一、概述 (1)
二、功能模块的划分 (2)
三、主要功能的实现 (3)
四、程序调试 (4)
五、总结 (5)
六、附录 (6)
一、概述
1、交互式系统:
随着计算机绘图技术的广泛应用,交互处理已是必不可少的容。

一个交互图形系统使用户能动态的输入坐标位置,指定选择功能,设置交换参数,以及在图形显示期间能够对花面上的某些部分进行修改、删除、增添、存储和在显示操作,且能全部徒手绘图。

交互式绘图软件系统都为用户提供了一个交互工作环境,称交互界面。

通常在图形显示方式,把屏幕划分为图形区,菜单区和提示区。

交互式绘图系统的基本功能一般可归纳为绘图功能、图形编辑、尺寸标准、作图工具、显示功能、询问功能、信息转换、和二次开发工具。

2、橡皮筋技术:
橡皮筋技术是在平面上确定一条直线一般是先定下起点再定下终点,最后把起点和终点连成直线。

如果要求这条直线能通过平面上某一点或和一已知圆相切,上述方法便不易做得很准确。

所谓橡皮筋技术就是在起点确定后,光标移出去定终点时,在屏幕上始终显示一条连接起点和光标中心的直线,这条直线随着光标中心位置的变动而变动,它就像在起点和光标中心之间紧紧地拉着一根橡皮筋,有了这根橡皮筋便比较容易地找到通过一个点或和一个圆相切的直线的位置。

相关文档
最新文档