版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学时间:星期一5、6节,星期三1、2节理教121实习:星期三11、12节,计算中心第一章绪论1.1图形无所不在〔1〕定义:计算机图形学是研究怎样用数字计算机生成、处理和显示图形的一门学科。人脑与电脑的区别0101010101分辨率高1011个神经元比特率高可大数百季字节〔2〕计算机软硬件的开展促进了计算机图形学的开展。随机扫描刷新式显示器光栅扫描式显示器采用阴极射线管,利用两对偏转电极或电磁偏转线圈控制电子束在荧光屏上的落点位置,在屏幕上绘制出闪亮的线条。采用成熟的彩色电视机技术,用三个电子束同步逐行扫描荧光屏上整齐排列的红、绿、蓝三基色点簇。一条电子束对准一种基色,一个点簇称为一个象素。一幅画面可以由640×480,800×600,1024×768,1280×1024不等的象素构成。将需要显示的图形点阵分解为红、绿、蓝三基色,并将各象素所对应的色彩编码值存储在帧缓存器内,用以控制扫描电子束每一瞬间的鼓励强度。色彩编码:计算机中将红、绿、蓝三种基色的强度分为256级,因此这三种基色的组合共有256×256×256=16777216种,也就是说,计算机可以显示1600多万种颜色。图形软件的迅速开展高档微机的出现主频:500兆——750兆赫兹内存:128兆——1季字节硬盘:几十季——几百季字节显示缓存:几兆——几十兆字节图形加速卡计算机辅助制图软件:AutoCAD计算机动画制作软件:3DMax,Flash,Maya图形图象处理软件:PhotoShop,CorelDraw地理信息系统软件:Arc/Info,MapInfo,Intergraph,CityStar,MapGIS,GeoStar〔3〕计算机图形学与图象处理计算机图形学的内容:用计算机生成景物的数字模型,并将它显示在计算机屏幕上,或者绘制成纸张或胶片上的图形。几何建模方法〔Modeling〕数字模型的绘制技术〔Rendering〕图形输入和控制的人机交互界面〔Userinterface〕计算机动画〔Animation〕图象处理的内容:用摄象机或扫描仪等观测手段将客观世界中原来存在的景物设置成数字化图象,对图象进行处理和分析,理解图象的内涵,进而从图象中提取所关注的景物的二维或三维几何模型。图象增强边缘提取图象分割图象压缩纹理分析图象序列分析形状特征提取模式识别机器人视觉三维形体重建计算机图形与图象技术的相互渗透、〔4〕计算机图形学的应用数字地球:1998年1月31日美国副总统戈尔在洛杉机加利福尼亚科学中心召开的地理信息系统年会上提出了这一设想。比方,可以设想一个小孩来到地方博物馆的一个数字地球陈列室,当他戴上头盔显示器,她将看到就象是出现在空中的地球。使用“数据手套〞,她开始放大景物,伴随越来越高的分辨率,她会看到大洲,随之是区域、国家、城市、最后是房屋、树木以及其它各种自然和人造物体。在发现自己特别感兴趣的某地块时,她可乘上“魔毯〞,即通过地面三维图象显示去深入查看。当然,地块信息只是她可以了解的多种信息中的一种。使用数字地球系统的声音识别装置,小孩还可以询问有关的土地覆盖、植物和动物种类的分布、实时的气候、道路、行政区线,以及人口等方面的信息。在这里,她还可以看到自己以及世界各地的学生们为“全球工程〞收集的环境信息。这些信息可以无缝地融入数字地图或地面数据里。用数据手套向超连接局部敲击,她还可以获得更多的有关她所见物体的信息。比方,为了准备全家去国家黄石公园渡假,她筹划一个完美的步行旅游,去观看刚从书中读到的喷泉、北美野牛和巨角岩羊。甚至在离开她家乡的地方博物馆之前,她就可以把要去步行旅游的地方从头到尾地浏览一遍。计算机辅助设计:在工业〔汽车、飞机、轮船、机械、建筑等〕设计中得到广泛应用。由传统的纸图变为计算机图形二维工程图——三维立体图,更方便、直观大大降低劳动量节省大量的物理模型本钱更加精确、协调科学计算可视化:给数据以形象;给信息以智能磁场强度涡流、湍流空气动力地震波地壳板块运动电影:计算机游戏多媒体远程教育电子邮件计算机艺术图形无所不在!1.2景物的几何建模贝齐埃曲线贝齐埃为现代CAD技术奠定几何形体数字定义理论根底的杰出先驱,是20世纪60年代法国雷诺汽车厂的工程师。他提出的构形原理是:两点P0,P1确定一条直线,表示为一次参数矢量方程B1(t)=(1-t)P0+tP1。三点P0,P1,P2确定一条二次曲线,表达形成为B2(t)=(1-t)2P0+2t(1-t)P1+t2P2t∈[0,1]P0,P1,P2称作顶点,中间顶点P1不但控制曲线的首末端切矢,而且惟一确定曲线的形状。依此类推,n+1个顶点惟一确定一条n次贝齐埃曲线。1.3场景绘制取景变换将几何对象的三维坐标转换到屏幕上的象素位置,需要进行一系列的坐标变换,这些变化统称为取景变换。删除隐藏面背向视点的面被正面遮挡,需要及早删除。目的是为了减少图形绘制的工作量,提高场景动态显示的实时性。裁减超出屏幕显示范围的场景要从几何模型上裁减掉。目的也是了减少图形绘制的工作量,提高场景动态显示的实时性。光亮度计算牵涉到定义景物的外表材质和颜色,确定光源的性质和位置,模拟光线传播的物理机制,处理好透明、半透明、镜面反射和物体相互遮挡、阴影生成等种种问题,为此设计各种复杂的算法。反走样算法由于图形显示器采用光栅模式,连续的景物外表只能以离散的光栅图像显示。每一象素取一定的红绿蓝三基色分量来显示该象素处可见的景物外表采样点的颜色和亮度。由于屏幕具有一定的分辨率,用离散的、固定大小的象素来表示画面上的纹理细节,必然要产生失真,因此需要采用反走样算法来缓和视觉上的反差。QuickTime技术简介QuickTime是苹果公司开发的新一代虚拟现实技术。它是一种基于静态图像处理的,在微机平台上能够实现的初级虚拟现实技术。它的出现使得以往专业实验室中本钱昂贵的虚拟现实技术的应用普及有了广阔的前景。假定我们在一室空间进行观察,室内空间一般有六个面,如果我们获取了这六个面的许多不同距离,不同方位的实景照片并将它们按照相互的关系有机连接起来,就可以在视觉上形成这个房间整个空间的整体认识,这就是全景概念。1.4人机交互界面窗口菜单图标〔1〕目前流行的图形界面〔2〕虚拟现实〔VirtualReality简称VR〕虚拟现实是指用立体眼镜、传感手套等一系列传感辅助设施来实现的一种三维现实,人们通过这些设施以自然的方式〔如头的转动、手的运动等〕向计算机送入各种动作信息,并且通过视觉、听觉以及触觉设施使人们得到三维的视觉、听觉等感觉世界。随着人们不同的动作,这些感觉也随之改变。1.5计算机动画我国第一部利用计算机辅助摄制的动画片是?咪咪钓鱼?,1991年由北方工业大学和北京电视台合作制作,以二维动画为主。用386微机和C语言编程,利用数字化仪和摄象机产生关键帧,再由计算机在相邻两幅关键帧之间内插生成中间帧,并自动跟踪上色。多层画面叠加在一起,形成完整的画面。10分钟的片子,5人小组花了10个月时间。计算机动画的应用领域非常广,最典型的有:1、计算机模拟飞行2、动画片3、电视广告第二章计算机图形系统及其设备本章内容:介绍计算机图形系统的组成以及主要的图形外部设备。2.1计算机图形显示原理阴极射线管〔CRT〕显示器的特点:亮度高,比照度好,分辨率高和色彩鲜艳并丰富。缺点是体积大、厚与笨重。液晶显示器的特点:器件薄,面积可大可小,重量轻,特别适合便携式计算机使用,缺点是分辨率相对较低,色彩不够鲜艳,且价格偏高。2.1.1CRT显示器〔1〕CRT显示原理灯丝阴极控制极水平偏转线圈聚焦极加速极垂直偏转线圈高压入口石墨涂层电子束偏转的电子束阴极荧光粉层阴极〔带负电荷〕被灯丝加热后,发出电子并形成发散的电子云。这些电子云被电子聚焦透镜聚焦成很细的电子束,在带正高压的阳极吸引下轰击荧光粉图层,而形成亮点。改变阴极与控制极之间的电位差,即可调制电子束的电流密度,从而改变所形成亮点的明暗程度。〔2〕随机扫描显示器显示原理根据图形的几何坐标产生适当的水平和垂直偏转磁场,控制电子束的偏转,就可以在CRT荧光屏上得到发光的图形轨迹。由于被显示的图形千变万化,因而电子束的扫描随之改变,没有固定扫描路径和顺序的限制。这种方式称为随机扫描。〔3〕光栅扫描显示器显示原理这种显示器发出的电子束的偏转方向是固定的,在荧光屏上形成光栅形状。阴极控制极屏蔽极阳极聚焦极阳极会聚板偏转线圈荫罩板电子束荧光粉〔4〕几个概念行频、帧频水平扫描频率为行频。垂直扫描频率为帧频。逐行扫描、隔行扫描隔行扫描方式是先扫偶数行扫描线,再扫奇数行扫描线。象素整个屏幕被扫描线分成n行,每行有m个点,每个点为一个象素。整个屏幕有m×n个象素。分辨率是指CRT在水平或垂直方向的单位长度上能分辨出的最大光点〔象素〕数,分为水平分辨率和垂直分辨率。通常用屏幕上象素的数目来表示。比方上述的n行,每行m点的屏幕分辨率为m×n。分辨率越高,相邻象素点之间的距离越小,显示的字符或图像也就越清晰。分辨率受显示器生产工艺、扫描频率以及显示存储器容量的限制。点距相邻象素点之间的距离,与分辨率指标相关。显示速度指显示字符、图形特别是动态图像的速度,与显示器的分辨率及扫描频率有关。可用最大带宽〔水平象素数×垂直象素数×最大帧频〕来表示。色彩与亮度等级亮度等级又称灰度,主要指单色显示器的亮度变化。色彩包括可选择显示器颜色的数目以及一帧画面可同时显示的颜色数,与荧光屏的质量有关,并受显示存储器VRAM容量的影响。图像刷新由于CRT内侧的荧光粉在接受电子束的轰击时,只能维持短暂的发光,根据人眼视觉暂留的特性,需要不断进行刷新才能有稳定的视觉效果,因此刷新是指以每秒30帧以上的频率反复扫描不断地显示每一帧图像。图像的刷新频率等于帧扫描的频率〔帧频〕,用每秒刷新的帧数表示。目前刷新频率标准为每秒50~120帧。帧缓冲存储器〔显示存储器〕存储用于刷新的图像信息的存储器。帧缓冲存储器的大小通常用X方向〔行〕和Y方向〔列〕可寻址的地址数的乘积来表示,称为帧缓冲存储器的分辨率。主机接口帧缓冲存储器视频控制器CRT显示器显示适配器2.1.2液晶显示器〔LCD:Liquid-CrystalDisplay〕主要应用于:计算器及轻便式、折叠式计算机。机理:通过能阻塞或传递光的液晶材料,传递或阻塞来自周围的或内部光源的偏振光。应用根底:具有线状结晶结构的分子可象液体那样流动,即液晶分子的排列柔软易变形,受电场、磁场、温度、应力等外部条件作用时,液晶分子会重新排列。基于液晶光学各向异性的各种特性也随着变化。2.1.3显示适配器显示器必须与显示适配器配套使用,它们必须支持同一显示标准。〔1〕显示标准:MDA720×350仅字符方式CGA640×200HGA720×348EGA640×350VGA640×480MCGA640×480XGA1024×768SVGA1024×768PGA1024×768AVGA1280×10241981年1982年1984年1989年1990年1993年PC显示适配器的开展〔2〕显示适配器的结构显示控制器显示存储器ROMBIOS显示器主板显示存储器存储显示图像的点阵数据。每个象点对应1-3个字节〔由颜色深度决定〕,屏幕上有多少个象点〔由分辨率决定〕就要有多少个这样的字节,从而可以估算出应有的显示存储器的根本容量。显示控制器是显示适配器的心脏。其功能包括:①管理与系统总线的接口②读取显示存储器中的图像点阵,通过转换后送至显示器③调色板功能,增加同屏显示颜色数目④先进的显示控制器具有图形加速功能,包括位和块传送、画线、填充和颜色扩展。ROMBIOS含有少量的固化软件,用于支持显示控制器建立所要求的显示环境。主要用于DOS操作系统。在Windows95或者WindowsNT的环境下,它的大局部功能是不被使用的。2.2计算机图形系统计算机图形系统按照通用和专用及平台配置的不同分为个人计算机〔通用微型机〕图形系统和图形工作站两类。二者统称桌面系统。2.2.1微型计算机图形系统特点:体积小,价格低廉,用户界面友好。Wintel平台:由Intel处理器为核心的计算机系统结构和Microsoft提供的WindowsNT,Windows95,Windows98主要操作系统组成的计算机平台。PentiumII处理器:Intel公司1997年5月正式推出,提供了整数运算、浮点运算和多媒体等三个方面的优异计算能力。PentiumIII处理器:除了时钟提高以外,整体性能也大大提高,如语音处理能力提高37%,图形图像处理能力提高64%,增加了70多条多媒体指令〔SSE〕。显示器: 显示标准:SuperVGA〔支持真彩色,16M色〕; 对角线尺寸:15英寸、17英寸; 分辨率:为1024×768象素; 点距:0.24mm; 扫描方式:逐行扫描; 水平扫描频率:30-82kHz; 垂直扫描频率:50-120kHz; 最大带宽〔水平象素数×垂直象素数×垂直扫描频率〕:150MHz绘图仪:平台式、滚筒式、喷墨式。打印机:针式、喷墨式、激光。数字化仪:磁致伸缩式、电子式、电磁感应式。它能通过传感笔或游标把数字化仪台面上的几何位置信息变为计算机能用的二进制数字信息。扫描仪:把被扫描的图形、图像、字符变为二进制图像数据的输入设备。鼠标、键盘:最常用的输入设备。2.2.2图形工作站具有完整人机交互界面,集高性能的计算和图形于一身,可配置大容量的内存和硬盘,I/O和网络功能完善,使用多任务多用户操作系统的小型通用个人化计算机系统。1983年美国APOLLO公司推出第一台适合计算机辅助设计〔CAD〕的工作站。现在全球最有名的图形工作站属SGI图形工作站。2.2.3虚拟现实系统除了具有常规的高性能计算机系统的硬件和软件外,还必须对以下关键技术提供强有力的支持。能以实时的速度生成具有逼真感的景物图形〔三维全彩色的、有明暗、纹理和阴影的图像〕能高精度的实时跟踪用户的头和手。头戴显示器能产生高分辨率图像和较大的视角。2.3图形输入设备用最通常的输入设备:键盘、鼠标配合CRT显示器即可组成简易的交互式图形系统。但高性能交互式图形系统可能配备光笔、数字化仪、扫描仪、语音输入系统和三维输入设备等图形设备。2.3.1光笔由光笔检测到屏幕的光信号,然后传输给计算机,从而到达输入的目的。2.3.2数字化仪是一种能将书写版面内的几何位置转换为数字坐标的图形输入设备。现在应用最广泛的是电磁感应式数字化仪。电磁感应式数字化仪原理:基板用非磁性材料制成,在基板下密布了互相绝缘的特殊铜线网格。在X和Y方向轮流以正弦、余弦信号鼓励网格。在传感笔或游标传感器中安装了接收线圈。接收线圈接收到感应信号后送至处理器,处理器计算鼓励信号与传感器内接收线圈感应信号的相位差,从而换算出传感器所在位置的坐标。2.3.3触摸屏容许用手指触摸屏幕来实现选择。触摸输入有光学的、电子的和声学的。精度最高的属声学的。声学触摸屏的原理:沿一块玻璃板的水平方向和垂直方向产生高频声波,触摸屏幕引起的每个波有一局部被手指反射到发射器,接触点的屏幕位置由每个波从发送与反射到发射器的时间间隔的测量来计算。2.3.4图形扫描仪图形扫描仪是直接把图形〔如工程纸图〕和图像〔如照片、广告画〕扫描输入到计算机中,以象素信息进行存储的设备。原理:用光源照射原稿,投射光线经过一组光学镜头射到电荷耦合器件上,再经过模/数转换器、图像数据暂存器等,最终输入到计算机。分辨率:扫描仪的分辨率是指在原稿的单位长度〔英寸〕上取样的点数,单位是dpi〔每英寸的点数〕,常用的分辨率有300dpi到1000dpi之间。幅面:是指所支持的原稿最大尺寸。常用的有A0,A1,A4等。2.3.5语音系统包括语音输入和语音识别系统。广泛应用于代替键盘实现文字的语音识别录入。这一技术已相当成熟,识别率可达95%以上。原理:声音输入一般是对着安装在头套上的麦克风陈述的。麦克风设计成将其它背景声音的输入降为最小。如果不同的操作员使用该系统,需进行一定的训练,随着操作员对识别结果确实认或选择,系统具有学习功能,会逐步提高识别率。2.3.6数据手套原理:是一种戴在手上的传感器,由一系列检测手和手指运动的传感器构成。发送天线和接收天线之间的电磁耦合,用来提供关于手的位置和方向的信息。发送和接收天线各自由一组三个互相垂直的线圈构成,形成三维笛卡儿坐标系统。能给出用户所有手指关节的角度变化,由应用程序判断出用户在虚拟现实环境中进行操作时的手的姿势。2.4计算机绘图设备象显示器一样,绘图机也分为随机矢量式和光栅点阵式两大类。它们的开展都非常迅速,且种类繁多。2.4.1滚筒式绘图机随机矢量式2.4.2平板式绘图机随机矢量式2.4.3喷墨式彩色绘图机光栅点阵式2.4.4静电式绘图机光栅点阵式第三章生成直线和圆弧的算法3.1生成直线的DDA〔DigitalDifferentialAnalyzer〕方法PsPe图3.1图中圆点表示DDA法生成的直线无论光栅显示器或绘图机都可以看成有一个网格存在。表示一条直线,就是要用靠近直线的一些网格点来代表这一直线。显示时要使这些点发出一定亮度。设直线的起点坐标Ps(xs,ys),终点坐标为Pe(xe,ye),令Δx=xe-xs,Δy=ye-ys,要绘的直线的微分方程是:令Δt=max(|Δx|,|Δy|)〔3.2)取时间步长为1/Δt,那么可得式〔3.1〕的数值解的递推公式xi+1=xi+Δx/Δt,yi+1=yi+Δy/Δt(3.3)用式(3.3)可求得图中直线PsPe上三角形表示的点,但显示时要用象素〔即图中网格结点〕来表示,这要用舍入的方法来找到最靠近三角形表示的点的象素,用这些象素〔图中圆表示的点〕来表示直线。这个方法称为DDA方法。〔3.1)其程序如下:proceduredda(x1,y1,x2,y2:integer);vark,i:integer;x,y,xincre,yincre:real;begin
k:=abs(x2-x1);
if
abs(y2-y1)>kthenk:=abs(y2-y1);xincre:=(x2-x1)/k;yincre:=(y2-y1)/k;x:=x1;y:=y1;
fori:=1tokdo
beginplot(trun(x),trun(y));x:=x+xincre;y:=y+yincre;
end;end;Δt=max(|Δx|,|Δy|)〔3.2)xi+1=xi+Δx/Δt,yi+1=yi+Δy/Δt(3.3)〔3.1)3.2生成直线的Bresenham算法在直线生成的算法中Bresenham算法是最有效的算法之一。令m=Δy/Δx,先就0≤m≤1的情况来说明Bresenham算法。可以得到以下递推公式:yi+1=yi+m(xi+1-xi)(3.5)由于屏幕上相邻两象素的x坐标相差1,所以:yi+1=yi+m(3.7)xiXi+1Yi,rYi+1,rCDBA由于m不一定是整数,由此式求出的yi也不一定是整数,因此要用坐标为〔xi,yir〕的象素来表示直线上的点,其中yir表示最靠近yi的整数。设图3.2中xi列上已用〔xi,yir〕作为表示直线的点,又设B点是直线上的点,其坐标为〔xi+1,yi+1〕,显然下一个表示直线的点〔xi+1,yi+1,r〕只能从图3.2中的C或者D点中去选。设A为CD边的中点,假设B在A点上面那么应取D点作为〔xi+1,yi+1,r〕,否那么应取C点。为了能确定B在A点上面或下面,令ε(xi+1)=yi+1-yir-0.5(3.8)假设B在A的下面,那么有ε(xi+1)<0,反之,那么ε(xi+1)>0。由图3.2可知yi+1,r=yir+1,假设ε(xi+1)≥0(3.9)yi+1,r=yir,假设ε(xi+1)≤0图3.2ε(x)的几何意义由式〔3.8〕和式〔3.9〕可得到ε(xi+2)=yi+2-yi+1,r-0.5(3.10)=yi+1+m-yi+1,r-0.5yi+1-yir-0.5+m-1,当ε(xi+1)≥0yi+1-yir-0.5+m,当ε(xi+1)≤0ε(xi+1)+m-1,当ε(xi+1)≥0ε(xi+1)+m,当ε(xi+1)≥0由式〔3.7〕和式〔3.8〕可得到ε(x2)=y2-y1-0.5=m-0.5(3.11)根据这个算法可得以下产生直线的程序:={={m:=deltay/deltaxe:=m-0.5
fori:=1todeltaxdo
beginplot(x,y);
ife>=0then
beginy:=y+1;e:=e-1
end;x:=x+1e:=e+m
end;f:=2*deltay-deltax
fori:=1todeltaxdo
beginplot(x,y);
iff>=0then
beginy:=y+1;f:=f-2*deltax
end;x:=x+1f:=f+2*deltay
end;请看程序3.3生成直线算法的进一步改进1987年有人提出二步法,即没循环一次不是绘制一个象素,而是绘制二个象素,这样无疑可以把生成直线的速度提高一倍。同样,我们先考虑当直线的斜率m属于区间[0,1]时,在x方向每增加两个单元,只可能出现以下的四种情况。图3.4只可能出现的四种情况ABCD我们利用3.2节的方法来讨论这个问题。令ε(xi+2)=yi+2-yir-0.5
假定当yi+2-yir≤0.5时绘制图A。当0.5≤yi+2-yir≤1时绘制图B。当1≤yi+2-yir≤1.5时绘制图C。当yi+2-yir≥1.5时绘制图D。
ε(xi+4)=yi+4-yi+2,r-0.5=yi+2+2m-yi+2,r-0.5yi+2-yir+2m-0.5,当ε(xi+2)≤0yi+2-yir+2m-0.5-1,当1≥ε(xi+2)>0yi+2-yir+2m-0.5-2,当ε(xi+2)>1ε(xi+2)+2m,当ε(xi+2)≤0ε(xi+2)+2m-1,当1≥ε(xi+2)>0ε(xi+2)+2m-2,当ε(xi+2)>1类似式(3.11)可取ε(x3)=y3-y1-0.5=2m-0.5
相应的程序为:={={3.4Bresenham生成圆弧的算法Bresenham圆弧算法是最有效的算法之一。不失一般性,我们可以假设圆心〔xc,yc〕就在原点。否那么只需要把求到的圆上的点〔x,y〕作一下平移变换即可。x’=x+xc,y’=y+yc便可得到圆心在〔x,y〕的圆上的点〔x’,y’〕。AB我们只须讨论图3.6中的弧AB的画法,如果要显示一个整圆时,只须在显示AB上任一点〔x,y〕时,同时显示在圆周上其他七个对称点。图3.6七个对称点〔x,y〕〔y,x〕〔y,-x〕〔x,-y〕〔-x,y〕〔-y,x〕〔-y,-x〕〔-x,-y〕45°Pi-1HiLi图3.7应取Hi还是取Li现在从A点开始向右下方逐点来寻找弧AB要用的点。如图3.7中点Pi-1是已选中的一个表示圆弧上的点,根据弧AB的走向,下一个点应该从Hi或者Li中选择。显然应选离AB最近的点作为显示弧AB的点。假设圆的半径为R,显然,当xhi2+yhi2-R2≥R2-(xli2+yli2)时,应该取Li。否那么取Hi。令di=xhi2+yhi2+xli2+yli2-2R2(3.13)显然,当di≥0时应该取Li。否那么取Hi。剩下的问题是如何快速的计算di。设图3.7中Pi-1的坐标为(xi-1,yi-1),那么Hi和Li的坐标为(xi,yi-1)和(xi,yi-1-1)。易知x0=0,y0=R,x1=x0+1因此d1=12+y02+12+(y0-1)2-2R2=3-2y0=3-2R(3.15)di=xi2+yi-12+xi2+(yi-1-1)2-2R2=2xi2+2yi-12-2yi-1-2R2+1(3.16)di+1=(xi+1)2+yi2+(xi+1)2+(yi-1)2-2R2=2xi2+4xi+2yi2-2yi-2R2+3(3.17)当di<0时,点Hi被选中,这时,yi=yi-1,那么di+1=di+4xi-1+6(3.18)当di≥0时,点Li被选中,这时,yi=yi-1-1,那么di+1=di+4(xi-1-yi-1)+10(3.19)根据这个算法可得以下显示弧AB的程序:Procedurearc(radius:integer)varx,y,d:integer;beginx:=0;y:=radious;d:=3-2*radious;whilex<ydobeginplot(x,y);ifd<0thend:=d+4*x+6elsebegind:=d+4(x-y)+10;y:=y-1;end;x:=x+1;end;ifx=ythenplot(x,y);end;请看程序3.5绘圆弧的正负法图3.8正负法绘制的圆图3.9Bresenham法绘制的圆设要显示的圆的圆心在〔xc,yc〕,半径为R,令。F(x,y)=(x-xc)2+(y-yc)2-R2那么圆的方程为F(x,y)=0当点〔x,y〕在圆内时,有F(x,y)<0,当点〔x,y〕在圆外时,有F(x,y)>0。3.6圆的多边形迫近法当圆的内接多边形边数足够多时,该多边形可以和圆接近到任意程度,因此在允许的范围内,可以用显示多边形代替显示圆。显示多边形的边可用Bresenham算法来实现。现在来说明如何求圆的内接正多边形。cαθiPi+1Pi设要绘的圆的圆心为c(xc,yc),半径为R。设内接多边形的一个顶点为Pi(xi,yi),cPi的幅角为θi〔见图3.10〕,那么:xi=xc+Rcosθiyi=yc+Rsinθi设多边形每条边所对的圆心角为α,那么下一个顶点Pi+1的坐标为xi+1=xc+Rcos(θi+α)=xc+(xi-xc)cosα-(yi-yc)sinαyi+1=yc+Rsin(θi+α)=xc+(xi-xc)sinα-(yi-yc)cosα用矩阵表示为xi+1cosα-sinαxi-xcxcyi+1sinαcosαyi-ycyc上式就是计算圆的内接正多边形的递推公式。因为α是常数,cosα和sinα只要在开始时计算一次,这样,算一个(xi+1,yi+1)只要作四次乘法运算。图3.10用正多边形迫近圆弧法[]=[][]+[]第四章变换4.1三维图形的显示流程一般来说,图形从输入到输出贯串着各种变换。被描述的对象所处的环境和显示屏幕的环境是很不同的,不仅位置不同,大多数情况下,尺寸也很不相同。这就要求协调二者的关系。此外,三维的图形要在二维的图纸或屏幕上表示出来要通过投影变换。为了从不同的方向去观察对象,要求能对对象作旋转变换,放大缩小和平移变换更是经常要用的。绘图过程中还要用窗口来规定要显示的内容,用视区来规定在屏幕上或图纸上显示的位置。本章学习实现上述功能的算法。世界坐标系的三维变换投影对窗口裁减窗口至视区的变换显示或绘图图4.2三维图形的显示流程4.2三维几何变换4.2.1平移假设点〔x’,y’,z’〕是由点〔x,y,z〕在x,y和z轴方向分别移动距离Δx,Δy和Δz得到的,那么这两点坐标间的关系为x’=x+Δxy’=y+Δy(4.1)z’=z+Δz该式的矩阵形式为x’100xΔxy’010yΔy(4.2)z’001zΔz[]=[][]+[]x’xz’zy’yxzy图4.3平移4.2.2放大和缩小设点〔x,y,z〕经缩放变换后得点〔x’,y’,z’〕,这两点坐标间的关系为x’=sxxy’=syy(4.3)z’=szz其中,sx,sy和sz分别为沿x,y和z轴方向放大或缩小的比例。该式的矩阵形式为x’sx00xy’0sy0y(4.4)z’00szz[]=[][]zxy图4.4缩放变换图4.4是以原点为相似中心进行的缩放变换。为了使缩放后的图形仍保持在原来的位置,可以另外定义一个相似中心。如可取图形的中心〔xp,yp,zp〕为相似中心。实现的方法是,先对图形作平移变换。变换量为(-xp,-yp,-zp)。然后再利用式〔4.4〕对图形作缩放变换。4.2.3旋转设给定点的坐标为〔x,y,z〕=〔rcosφ,rsinφ,z〕那么它绕z轴旋转α角后,可得点〔x’,y’,z’〕。易知x’=rcos(φ+α)=xcosα-ysinαy’=rsin(φ+α)=xsinα+ycosαz’=szz这个变换的矩阵形式为x’cosα-sinα0xy’sinαcosα0y(4.5)z’001z这里讲的绕一轴旋转α角是按右手法那么,即假设α>0,大拇指指向轴的方向,其它手指指的方向为旋转方向。绕y和x轴的旋转公式分别为x’cosα0sinαxy’010yz’-sinα0cosαzx’100xy’0cosα-sinαyz’0sinαcosαz[]=[][][]=[][][]=[][]4.2.4剪切图4.7是一个矩形ABCD沿x轴〔称为方向轴〕方向的切变,oy轴称为依赖轴。切变的程度由参数s=tgα决定。易知|AA‘|=|oA|tgα=ys设点〔x,y,z〕经切变后成为〔x’,y’,z’〕,由图4.7可知它们之间的关系是x’1s0xy’010y(4.9)z’001z如果依赖轴和方向轴改成别的坐标轴,那么上式中的矩阵要作适当的变动。图4.7剪切yxCDAB(x,y)oB’(x’,y’)A’[]=[][]4.3投影由于显示器和绘图机只能用二维空间来表示图形,要显示三维图形就要用投影方式来降低其维数。4.3.1透视xzy图4.12P为Q的投影CQPC’Q’P’zxC’Q’P’zczxcx图4.13在oxz平面上的正投影xPO在坐标系oxyz中来讨论投影,假设投影平面就是z=0。设视点C(xc,yc,zc),空间中任一点Q(x,y,z)在z=0平面上的投影为P(xp,yp,zp)。设Q、P、C在oxz平面上的正投影为Q’,P’和C’,可得xp-xcx-xczczc-z整理后便有xp=xc+(x-xc)zc/(zc-z)(4.14)同理可得yp=yc+(y-yc)zc/(zc-z)(4.15)这两式便是透视投影的计算公式。把空间上任一点〔x,y,z〕的坐标代入式〔4.14〕和式〔4.15〕便可求出在z=0平面的投影点P〔xp,yp〕。——=——4.3.2平行投影xzyQPQ’P’OzxQ’P’zczxxPαβ设给定的投影方向为〔xd,yd,zd〕。假设P(xp,yp)为任一点Q〔x,y,z〕在该投影方向上在z=0平面上的投影。又设Q和P在oxz平面上的投影分别为Q’和P’。α为Q’P’与x轴的夹角,易知tgα=zd/xd。又从图中可以得出:xp=x+ztgβ=x+ztg(α-π/2)=x-zctgα=x-zxd/zd(4.21)同理可得yp=y-zyd/zd(4.22)式〔4.21〕和式〔4.22〕便是平行投影的计算公式。4.3.3投影平面是任意平面的情况yZxUz’x’y’RNo’在实际应用时投影平面的位置要允许改变。为了确定一个投影平面,先给定一个参考点R〔xr,yr,zr〕、投影平面的法线方向N〔xn,yn,zn〕和一个常数d。过点R沿N方向作射线,与投影平面的交点o’,并且使|o’R|=d。调整R和N可以很方便的改变投影平面的位置和方向。首先在投影平面上建立一个坐标系〔o’x’y’z’〕。并且oz’的方向为投影o平面的法线方向。同时给定一个向量U(xu,yu,zu),此向量在投影平面上的正投影所指的方向便是o’y’的方向。这样,对于坐标系〔o’x’y’z’〕来说,投影平面正好是z’=0平面,因此可以用式〔4.14〕和式〔4.15〕或式图4.17投影平面的指定〔4.21〕和式〔4.22〕来计算这两种投影。现在我们只须求出这两个坐标系的转换关系。设〔x0,y0,z0〕是点o’在坐标系oxyz中的坐标,o’x’,o’y’和o’z’轴的单位方向向量为〔a11,a12,a13〕、〔a21,a22,a23〕和〔a31,a32,a33〕,那么从坐标系oxyz到o’x’y’z’的变换是x’a11a12a13x-x0y’a21a22a23y-y0(4.24)z’a31,a32,a33z-z0下面给出计算x0,y0,z0和aij〔I,j=1,2,3〕的方法。由图4.17可知x0=xr+dxn/(xn2+yn2+zn2)1/2(4.25)y0=yr+dyn/(xn2+yn2+zn2)1/2(4.26)z0=zr+dzn/(xn2+yn2+zn2)1/2(4.27)o’z’轴和N方向一致,故有(a31,a32,a33)=(xn,yn,zn)/(xn2+yn2+zn2)1/2(4.28)o’x’轴和向量U×N方向一致,设ijkU×N=xuyuzu=b1i+b2j+b3kxnynzn其中i,j和k分别为ox,oy,oz轴的单位方向向量,那么(a11,a12,a13)=(b1,b2,b3)/(b12+b22+b32)1/2(4.29)[]=[][]o’y’轴的单位方向向量应是o’z’和o’x’轴的单位向量的向量积,因此〔x21,y22,z23〕=〔a13a32-a12a33,a11a33-a13a31,a12a31-a11a32〕(4.30)用式〔4.25〕至〔4.30〕可算出式〔4.24〕中全部常数,因此在坐标系oxyz中给定的投影方向或视点的坐标都可用式〔4.24〕变换到坐标系o’x’y’z’中的量〔xd,yd,zd〕和〔xc,yc,zc〕。4.4裁剪二维窗口是投影平面上的一个矩形。一般来说,这个矩形的边和投影平面上的坐标轴平行,图形在窗口内的局部被显示出来,窗口外的局部被裁减掉了。平面上的图形受该矩形的裁减称为二维裁减。裁减和变换一样,直接影响整个图形系统的效率。裁减的方法很多,效率的上下和图形的情况、计算机功能等因素有关,因此要根据实际情况来选择裁减方法。下面先讨论直线的裁减方法。4.4.1Sutherland-Cohen算法算法分两步:第一步:判断直线段是否完全在窗口内〔如果答复是肯定的,该线段称为完全可见,如图4.18中线段AB〕,或可显然的决定线段完全在窗口外边〔称为显然完全不可见〕。所谓显然地完全不可见是指直线段的两个端点均在窗口的某一条边的外侧,如图4.18中的线段CD。第二步:对不能判断完全可见或显然的完全不可见的线段〔如图4.18中的KL,IJ,EF〕,那么进行第二步处理。这时需要计算出直线段和窗口边界的一个交点,这个交点把直线分成两段,把其中一条显然完全不可见的线段抛弃,对余下局部再作第一步的判断,重复上述过程,直到直线段最后余下的局部可以用第一步的判断得出肯定结论为止。为了实现算法的第一局部,用窗口的四条边如图4.19那样把整个平面分成九个区域,每个区域中的点采用同一编码,这一编码的特点是对于窗口的某一条边外侧的三个区域的四位编码中有一位全为1。例如在x=xl左侧的三个区域中编码的第四位都是1。对要被剪裁的线段的两个端点,根yxyTyBxLxBCDABEFKLIJ图4.18二维窗口yxyTyBxLxB100110001010000101010000001001100100图4.19区域编码据它们所在的区域定下它们的编码,如果两个编码都是0000,那么这条线段完全可见。如果两个编码的逻辑乘不为0000,这时可断定两个编码的某一位都为1,这条直线段的两个端点位于窗口的一条边的外侧,因而是完全不可见的。如果上述判断不能定论,就要进入第二步,例如图4.20中的线段KL就是这种情况。从K点的编码分析出K在x=xL的左侧,KL必和x=xl有交点,求出其交点M,KM显然是完全不可见的,因而只要对ML从第一步开始重复上述处理。由于ML还是不能用第一步下结论,又从M的编码发现M在y=yT的上侧,因而要求ML和y=yT的交点N,丢掉MN,对NL用第一步的方法可断定NL为完全可见,至此裁减结束。过程clip描述了这一算法。其中用一个结合〔结构〕来描述端点的编码。图4.20线段KL不能用编码确定yxyTyBxLxBKLMNvarxl,xr,yt,yb:real;procedureclip(x0,y0,x2,y2:real);labelreturn;typeedge=[top,bottom,right,left];varc,c1,c2:edge;x,y:real;procedurecode(x,y:real;varc:edge);beginc:=[];
ifx<xlthenc:=[left];
elseifx>xrthenc:=[right];
ify<ybthenc:=c+[bottom];
elseify>ytthenc:=c+[top];end;begincode(x0,y0,c1);code(x2,y2,c2);
while(c1<>[])or(c2<>[])
beginif(c1*c2<>[])thengotoreturn;c:=c1;
ifc:=[]thenc:=c2;
ifleftincthen
beginy:=y0+(y2-y0)*(x1-x0)/(x2-x0);x:=x1;
end;elseifrightincthen
beginy:=y0+(y2-y0)*(xr-x0)/(x2-x0);x:=xr;
end;
elseifbottomincthen
beginx:=x0+(x2-x0)*(yb-y0)/(y2-y0);y:=yb;
end;
elseiftopincthen
beginx:=x0+(x2-x0)*(yt-y0)/(y2-y0);y:=yt;
end;
ifc=c1then
beginx0:=x;y0:=y;code(x,y,c1);
end;
else
beginx2:=x;y2:=y;code(x,y,c2);
end;
end;showline(x0,y0,x2,y2);end;4.4.2中点分割法设要裁减的线段是P0P1。中点分割算法可分成两个平行的过程进行,即从P0点出发找出离P0最近的可见点〔图4.21中的A点〕,和从P1点出发找出离P1最近的可见点〔图4.21中的B点〕。这两个可见点的连线就是原线段的可见局部。从P0出发找最近可见点的方法是先求P0P1的中点Pm,假设P0Pm不能定为显然不可见,那么取P0Pm代替P0P1,否那么取PmP1代替P0P1,再对新的P0P1求中点Pm。重复上述过程,直到P1Pm长度小于给定的小数ε为止。P0可见否?P0P1显然不可见Pm=(p0+p1)/2|Pm-P1|<ε?P0Pm显然不可见?P0=PmP1=Pm否否否是P0=Pmexit原线完全不可见exitP0=PmexitP0P1ABPm图4.21中点分割算法图4.22中点分割算法框图4.4.3梁友栋-Barsky算法设要裁减的线段是P0P1。P0P1和窗口边界交于A,B,C,D四点,见图4.23。算法的根本思想是从A,B和P0三点中找出最靠近的P1点,图4.23中要找的点是P0。从C,D和P1中找出最靠近P0的点。图4.23中要找的点是C点。那么P0C就是P0P1线段上的可见局部。具体计算时,把P0P1写成参数方程x=x0+Δx·t〔4.38〕y=y0+Δy·t其中Δx=x1-x0,Δy=y1-y0。把窗口边界的四条边分成两类,一类称为始边,另一类称为终边。当Δx≥0〔Δy≥0〕时,称x=xL(y=yB)为始边,x=xR(y=yT)为终边。当Δx<0〔Δy<0〕时,称x=xL(y=yB)为终边,x=xR(y=yT)为始边。求出P0P1和两条始边的交点的参数t0’和t0’’,令t0=max(t0’,t0’’,0)那么t0就是图4.23中A、B和P0三点中最靠近P1的点的参数。求出P0P1和两条终边的交点的参数t1’,t1’’,令t1=min(t1’,t1’’,1)那么t1就是图4.23中C、D和P1三点中最靠近P0的点的参数。当t1>t0时,方程〔4.38〕中参数t∈[t0,t1]的线段就是P0P1的可见局部。当t0>t1时,整个直线段为不可见。yxyTyBxLxBABCDP1P0图4.23P0C可见部分为了确定始边和终边,和求P0P1与它们的交点,令QL=-ΔxDL=x0-xLQR=ΔxDR=xR-x0QB=-ΔyDB=y0-yBQT=ΔxDT=yT-y0易知交点的参数为ti=Di/Qi,i=L,R,B,T当Qi<0时,求得的ti必是P0P1和始边的交点的参数。当Qi>0时,ti必是P0P1和终边的交点的参数。当Qi=0时,假设Di<0,那么P0P1是完全不可见的〔如图4.24中AB,有QR=0,DR<0〕。当Qi=0而相应的Di≥0时那么是另一种情况,图4.24中的EF就是这种情况,它使QL=0,DL>0和QR=0,DR>0。这时由于EF和x=xL及x=xR平行,故不必去求出EF和x=xL及x=xR的交点,而让EF和y=yT及y=yB的交点决定直线段上的可见局部。xLxByxEFCDAB图4.24Qi=0的情况此算法的程序为varxl,xr,yt,yb:real;procedureclip(x0,y0,x2,y2:real);label1;vart0,t1,deltax,deltay:real;procedureclipt(q,d:real;vart0,t1:real);varr:real;begin
ifq<0then
beginr:=d/q;
ifr>t1then
goto1;
elseifr>t0thent0:=r;
end;
elseifq>0then
beginr:=d/q;
ifr<t0then
goto1;
elseifr<t1thent1:=r;end;elseifd<0thengoto1;end;begint0:=0;t1:=1;deltax:=x2-x0;clipt(-deltax,x0-x1,t0,t1);clipt(deltax,xr-x0,t0,t1);deltay:=y2-y0;clipt(-deltay,y0-yb,t0,t1);clipt(deltay,yt-y0,t0,t1);x2:=x0+t1*deltax;y2:=y0+t1*deltay;x0:=x0+t0*deltax;y0:=y0+t0*deltay;showline(x0,y0,x2,y2);1:end;TurboC中的绘图函数绘图函数包含在头文件GRAPHICS.H中1circle:用给定的半径在〔x,y〕绘制一个圆circle(intx,inty,intradious);2ellipse:绘制一个椭圆弧ellipse(intx,inty,intstangle,intendangle,intxradious,intyradious);3putpixel:在指定的点绘制一个象素putpixel(intx,inty,intpixelcolor);4line:在两个给定点之间绘制一条直线。使用当前颜色、线型和线宽line(intx1,inty1,intx2,inty2);5lineto:从当前点到给定点〔x,y〕绘制一条直线。使用当前颜色、线型和线宽lineto(intx,inty);6linerel:从当前点到距离该点相对位移〔dx,dy〕的点绘制一条直线。linerel(intdx,intdy);7setcolor:设置当前绘图颜色setcolor(intcolor);8moveto:将当前位置移动到〔x,y〕moveto(intx,inty);9moverel:将当前位置移动一个相对位移〔dx,dy〕moverel(intdx,intdy);10rectangle:绘制一个矩形。使用当前线型、线宽和颜色rectangle(intleft,inttop,intright,intbottom);11setlinestyle:设置当前的线型、线宽或者线模式setlinestyle(intlinestyle,unsignedupattern,intthickness);12setfillstyle:设置当前的填充模式和颜色setfillstyle(intpattern,intcolor);4.4.4多边形的裁减对多边形的裁剪不等于把多边形的每一条边进行裁剪。因为在图形学中,多边形被认为是一个封闭的区域,它把平面分为多边形内和多边形外,对一个多边形的裁剪结果仍要求是多边形,且原来是多边形内的点也在裁剪后的多边形内。一局部窗口的边界可能成为裁剪后的多边形的边界,一个凹多边形裁剪后可能成为几个多边形。对多边形裁剪的Sutherland-Hodgman算法是一种简便的方法,只要对多边形用窗口的四条边依次裁剪四次〔见图4.27〕便可得到裁剪后的多边形。图4.27Sutherland-Hodgman算法图4.28是Sutherland-Hodgman算法的框图:设封闭多边形的顶点为P1,P2,…Pn,框图中e是表示窗口的四条边中正在裁剪的一条边,每次裁剪时第一个点存放在F中,以便对最后一条边裁剪时使用。用图4.28〔a〕中的算法对边P1P2,P2P3,…Pn-1Pn作裁剪,用图4.28〔b〕中的算法对最后一条边PnPn-1作裁剪。裁剪好一条边便输出一条边。是否第一点?取点PSP和e相交?计算SP和e的交点I输出ISPFPS在e的可见侧退出输出SSP和e相交?计算SP和e的交点I输出I退出(a)(b)图4.28Sutherland-Hodgman算法的框图是是是4.4.5三维图形的裁剪yyxzxz(a)(b)图4.31两种视域平行投影时视域如图4.31(a)所示,它是由方程x=0,x=1,y=0,y=1,z=0,z=1代表的六个平面围成的立方体。透视时的视域如图4.31(b)的棱台,它是由方程x=z,x=-z,y=z,y=-z,z=zmin和z=1代表的六个平面围成。图形对三维的裁剪就是把视域内的图形保存下来,把视域外的局部裁剪掉。前面讲的各种裁剪方法均可以推广至三维。例如Sutherland-Cohen算法中的编码应为六位。括号中的条件适用于透视的情况,平行投影时用括号外的条件。点在视域上面,第一位为1,y>1,(y>z)点在视域上面,第二位为1,y<0,(y<-z)点在视域上面,第三位为1,x>1,(x>z)点在视域上面,第四位为1,x<0,(x<-z)点在视域上面,第五位为1,z>1,(z>1)点在视域上面,第六位为1,z<0,(z<zmin)设线段的起点和终点分别为P0(x0,y0,z0)和P1(x1,y1,z1),直线方程可表示成参数形式x=x0+(x1-x0)t,y=y0+(x1-x0)t,x=x0+(x1-x0)t(4.39)和视域的边界面,例如y=1求交时,可由1=(y1-y0)t’+y0,t’=(1-y0)/(y1-y0)求得交点的参数t’,再把t’代入〔4.39〕,即可得交点的坐标。求P0P1和平面x=z的交点时,可把〔4.39〕代入x=z中求得交点处的参数t’=(z0-x0)/[(x1-x0)-(z1-z0)](4.40)把t’代入式(4.39)即可得到交点的坐标。梁友栋-Barsky算法也很容易推广到三维。当视域为立方体时,这种推广是直接的。当视域为棱台时,对x=z,x=-z,y=z,y=-z四个平面来说,对应于二维裁剪时的Q和D值可取QL=-(Δx+Δz),DL=z0+x0QR=(Δx-Δz),DR=z0-x0QB=-(Δy+Δz),DB=z0+y0QT=(Δy-Δz),DT=z0-y0对z=zmin和z=1两个平面,相应的Q和D值可取为QF=-Δz),DF=z0-zminQRA=Δz,DRA=1-z0易知相应平面和P0P1交点的参数值为ti=Di/Qi,i=L,R,B,T,F,BA。第六章交互技术6.1交互的硬件设备6.1.1定位设备鼠标、屏幕上的光标、操纵杆、数字化仪、键盘上的方向键、光笔、触摸屏等。6.1.2键盘设备用于输入字母和数字。6.1.3取数设备6.1.4选择设备鼠标、功能键等。6.1.5其它输入设备语音识别器、数据手套、数据头盔等。6.2根本的交互任务6.2.1定位6.2.2选择6.2.3数量输入6.2.4文本输入6.3进一步的交互技术6.3.1几何约束定位约束:在屏幕或窗口上定义一些不可见的网格,有时也可以用点的形式表示网格结点的位置。对用任何方式输入一个点都用离它最近的一个网格结点来代替。假设定义不可见网格线为x=10i,y=10j,i,j=0,1,2,…n设输入点的坐标为(x,y),那么离它最近的网格点的坐标为(10*((round(x)+5)div10),10*((round(y)+5)div10))(6.2)方向约束:例如要绘制的线只能是垂直或水平两个方向,当给定的起点和终点连线与水平线的夹角小于45°时,便绘出一条直线,否那么就绘垂直线。这种约束对只要绘垂直线或水平线的情况带来很大方便。6.3.2拖动当我们要把一个图形放到一个新位置时,如果我们不是简单地用光标指定新位置的一个点,而是随着鼠标引导光标移动的同时图形也跟着拖到新的位置。这将使用户感到更直观并可把图形的位置定得更准确、恰当。6.3.3橡皮筋技术在平面上确定一条直线一般是先定下起点再定下终点,最后把起点和终点连成直线。所谓橡皮筋技术就是在起点确定后,光标移出去确定终点时,在屏幕上始终显示一条连结起点和光标中心的直线,这条直线随着光标中心位置的变动而变动。6.3.4图形变比为了把屏幕上的图形的某局部放大或缩小,可用图形变比〔zoom〕。例如可以用矩形的橡皮筋在屏幕上划定一个区域,要求把区域内的图形局部放大,要实现这个功能只要在程序中把这个矩形定义为窗口,再显示时就可把窗口包含的图形局部显示在视区内,窗口越小,图形放得越大。6.3.5引力场效果在用光标选图时,要把光标中心移到图段上去,如果被选的图形只是一个点或一根线,那么把光标中心对准一点或一条直线段需要花较多时间。为了比较容易地做到这一点,可用引力场的方法。在每一条线段的周围假想有一个区域,这个区域象一根香肠或哑铃,如图6.11所示,光标中心落在这个区域时,就自动地被直线上最近的一个点所代替。这就好象一个质点进入了直线周围的引力场后,就会被吸引到这条直线上去一样。香肠或哑铃的粗细要适中,太细了不易进入引力区,太粗了线和线的引力区相交,光标在进入引力区相交局部可能会被吸引到不是要选的线段上去,这样就出现错误了。6.3.6标尺和导向线为了能用比较准确的尺寸来绘图,可以在屏幕上使用标尺。用户可用适当的命令在屏幕上显示标尺。使用一条线表示当前光标中心所在的位置。6.3.7坐标显示为了能把点定位得准确,可以在屏幕上显示光标中心所在位置的坐标。6.3.8在三视图上作三维输入在输入一个立体图时,时常上一个个点、一条条线或一个个面单独输入的,而对一个点、一条线或者一个面来说,只要在三视图上给出足够的信息,总是可以惟一地确定三维空间中的对应图形。对输入一个点来说,实际上只要在两个视图上把点的对应位置指定后便惟一确定了三维空间中的一个点,因为给定了一个点在两个视图上两个对应位置后,便可确定该点的x,y和z坐标值,因而也确定了三维空间中的一个点。这样把直线段上两端点在三视图上输入后便可决定三维空间的一条直线,把一个面上的顶点在三视图上输入后,也惟一确定了三维空间中的一个面。如果把一个多面体的各面均用上述方法输入,也就在三维空间中输入了一个多面体。用三视图来输入立体图是目前主要的一种输入手段。6.3.9推移很多立体图形可以通过二维图形经过一定的推移〔如延伸、旋转等〕而得到。这样的图形称为“二维半〞图形。6.3.10结构平面输入立体图形常是由简到繁一步一步地构造,例如要生成图6.20的图形,先要生成图6.18中的二维半图形,再在平面ABCD上用推移的方法拉伸出一个柱体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度高端白酒品牌独家代理销售合同3篇
- 酒吧饮料冷藏柜租赁合同模板
- 软件开发股权合作协议
- 建筑住宅分包合同
- 2025版孔丽与张明离婚后财产分割及共同债务承担协议书3篇
- 棒球场遮阳棚安装合同
- 物流公司合作合同
- 医疗设备维修服务合同
- 投资者关系与市场信任
- 通信工程二级建造师合同模板
- 汽车底盘维修实训考核表(共24页)
- 炼铁厂3#烧结主抽风机拆除安全专项方案
- 四年级上册英语期末复习课件综合复习及检测讲义 牛津上海版一起
- 2020年污水处理厂设备操作维护必备
- 初中英语语法课堂教学设计有效性的探讨
- LSS-250B 纯水冷却器说明书
- 《煤矿开采学》课程设计实例
- (完整版)todo,doingsth初中魔鬼训练带答案
- 福建省青少年科技教育协会章程
- 防止返贫监测工作开展情况总结范文
- 2015年度设备预防性维护计划表
评论
0/150
提交评论