
计算机图形学
文章平均质量分 85
zl908760230
遇到问题首先得学会自己找答案!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(1)C语言图形模式的初始化和关闭
图形函数库:#include 图形模式的初始化和关闭 ① 显示器有两种显示模式: 文本模式:默认模式,只能显示文本,图形函数不能工作。 图形模式:图形函数可以工作,能够显示图形,并且有专门的文本输出函数。 ② 图形模式的初始化函数: void initgraph (int *gdriver, int *gmode,原创 2016-12-05 20:17:16 · 2746 阅读 · 0 评论 -
(13)裁剪之多边形裁剪
多边形的裁剪特点 多边形是由若干直线段围成的封闭图形。裁剪多边形所得到的结果,应该仍是一个多边形,即是一个封闭图形。 多边形和窗口之间可能存在的位置关系如下: 逐边裁剪算法基本思想:该算法依次用窗口的四条边框直线对多边形进行分步裁剪。先用一条边框直线对整个多边形进行裁剪,得到一个或若干个新的多边形;再用第二条边框直线对这些新产生的多边形进行裁剪。依次类原创 2016-12-31 20:15:43 · 4596 阅读 · 0 评论 -
(14)线宽与线型的处理
在实际应用中,除了使用单像素宽的线条,还经常使用指定线宽和线型的直线与弧线。要产生具有宽度的线,可以顺着扫描所生成的单像素线条轨迹,移动一把具有一定宽度的“刷子”来获得。“刷子”的形状可以是一条线段或一个正方形。一直线线宽的处理1.线刷子 垂直线刷子:直线斜率在[–1, 1]时,把刷子置成垂直方向 水平线刷子:直线斜率不在[–1, 1]时,把刷子置成水平方向原创 2016-12-31 20:42:07 · 3005 阅读 · 0 评论 -
(15)二维图形基本几何变换
图形变换:一般是指对图形的几何信息经过变换后产生新的图形。图形变换的实质:改变图形的坐标位置。一个图形的基本要素是点,点构成线,线构成面,若干面构成体,因此只要改变了图形上的各点坐标位置,整个图形就完成了变换。在二维空间中,用(x, y)表示平面上一点;在三维空间中用(x, y, z)表示空间一点。因此,可用点的集合(简称点集)来表示一个平面图形或三维立体,写成矩阵形式为:原创 2016-12-31 21:38:55 · 15046 阅读 · 0 评论 -
(16)二维图形复合变换
有些变换仅用一种基本变换是不能实现的,必须由两种或多种基本变换组合才能实现。这种由多种基本变换组合而成的变换称之为复合变换,相应的变换矩阵称作为复合变换矩阵。比如:已知三角形各顶点坐标为(10, 10),(10, 30),(30, 15),对其进行下列变换,试写出复合变换矩阵。(1)沿X方向平移20,沿Y方向平移15,再绕原点旋转90度。(2)绕原点旋转90度,沿X方向平移20,沿Y方原创 2016-12-31 22:30:31 · 9141 阅读 · 0 评论 -
(17)三维图形几何变换
三维图形的基本变换矩阵三维图形几何变换是二维图形几何变换的扩展。在三维空间中,用规范化齐次坐标[x y z 1]表示三维点,变换原理是把齐次坐标点(x, y, z, 1)通过变换矩阵变换成新的齐次坐标点(x’ y’, z’, 1),即: [x y z 1] T3D = [x'原创 2017-01-01 11:54:54 · 10782 阅读 · 0 评论 -
(18)投影变换的定义和分类
投影变换:把空间三维立体投射到投影面上得到二维平面图形的过程。几个相关概念:投影中心:在三维空间中,选择一个点,记该点为投影中心。投影平面:不经过投影中心定义一个平面,记该平面为投影面。投影线:从投影中心向投影面引任意多条射线,记这些射线为投影线。三维物体的投影:穿过物体的投影线将与投影面相交,在投影面上形成物体的像,这个像记为三维物体在二维投影面上的投影。原创 2017-01-01 12:22:32 · 8178 阅读 · 0 评论 -
(19)正投影变换(三视图)
在工程上将三维坐标系OXYZ中的三个坐标平面分别设为H面(XOY平面)、V面(XOZ平面)、W面(YOZ平面)。 所谓正投影就是三维图形上各点分别向某一坐标平面作垂线,其垂足便称为各个三维点的投影点,将所有投影点按原三维图形中点与点之间的对应关系一一连起来便得到了一平面图形,该平面图形就称为三维图形在该坐标平面上的正投影。原创 2017-01-01 12:50:52 · 13311 阅读 · 0 评论 -
(20)正轴测投影变换
正轴测投影变换矩阵1)正轴测投影的投影方向与投影平面垂直。2)如果将空间物体绕某个投影面所包含的两个坐标轴进行旋转,然后再向该投影面进行正投影,即可得到该物体的正轴测图。3)通常选用XOZ平面(V面)作为投影平面。先绕Z轴正向旋转角,再绕X轴反向旋转角,最后向XOZ平面作垂直投影,其变换矩阵为: 则空间任意点P(x, y, z)作原创 2017-01-01 13:22:16 · 7918 阅读 · 0 评论 -
(21)斜轴测投影变换
投影方向不垂直于投影平面的平行投影称为斜平行投影,也称斜轴测投影。斜轴测投影可以通过三维空间物体的错切变换后做正投影获得。 斜轴测投影的变换矩阵斜轴测投影是将物体先沿两个方向产生错切,再向投影平面做正投影而获得。通常先沿X轴含Y错切,再沿Z轴含Y错切,最后向XOZ平面(V面)做正投影得到,变换矩阵为:原创 2017-01-01 15:08:38 · 5748 阅读 · 2 评论 -
(22)透视投影变换
基本概念透视投影属于中心投影,它比轴测图更富有立体感和真实感。这种投影是将投影面置于投影中心与投影对象之间。 灭点:在透视投影中,一组平行的线将共同消失于无穷远处,称为直线的灭点。主灭点:若该组平行线与某坐标轴平行,则称此灭点为主灭点。 根据主灭点的个数,透视投影可分为:一点透视:只有一个主灭点,即投原创 2017-01-01 15:38:24 · 4650 阅读 · 0 评论 -
(23)窗口视区变换
坐标系1、世界坐标系(World Coordinate System,简称WC) 1)世界坐标系是一个符合右手定则的直角坐标系。 2)世界坐标系用来定义用户在二维或三维世界中的物体,因此也称为用户坐标系。 3)世界坐标系是无限大且连续的,即它的定义域为实数域。2设备坐标系(Device Coordinate System,简称DC) 1)图形输出设备(如显示原创 2017-01-01 15:57:54 · 4456 阅读 · 0 评论 -
(24)视向变换
观察坐标系这里再引入一种新的参考坐标系,这种坐标系比较符合人们在三维空间中观察物体和绘图的习惯:① 当观察空间某一物体时,该物体与视点之间距离的大小反映了物体离我们的远近,称该距离为“观察深度”简称深度。这个深度应该在新坐标系里的某个坐标轴上得到体现:深度大,该坐标值应大;深度小,则该坐标值应小。② 在图纸上绘图时,二维绘图坐标系的位置一般使坐标系的原点在图纸的左下角,然后让X轴自原创 2017-01-01 16:08:44 · 534 阅读 · 0 评论 -
(12)裁剪之直线段裁剪
图形裁剪的定义:确定图形在指定区域(即裁剪窗口)内的部分并保留,以及在区域外的部分并裁掉的过程称为图形裁剪。 假定:裁剪窗口为矩形窗口,左下点坐标为(xl, yb), 右上点坐标为(xr, yt)。 直线段的裁剪定义:直线段裁剪就是保留给定线段在窗口内的部分。 直线段与窗口的位置关系有以下几种情况:⑴ 直线段两个端点在窗口内(线段c);⑵ 直线段原创 2016-12-31 20:03:50 · 5936 阅读 · 0 评论 -
(11)图案填充
图案填充:在确定了区域内一个像素之后,不应立刻向该像素填色,而是先查询图案位图的对应位置,来判断如何填充。图案填充方式 透明方式:当图案位图的对应位置为1时,用前景色写像素;否则(为0时),不改变该像素的颜色值。 不透明方式:当图案位图的对应位置为1时,用前景色写像素;否则(为0时),用背景色写像素。图案填充方法——对齐方法第一种对齐方法:基本思原创 2016-12-31 19:24:03 · 563 阅读 · 0 评论 -
(2)C语言常用图形函数
屏幕颜色的设置和清屏函数① 设置背景色:void setbkcolor(int color);② 设置前景色:void setcolor(int color); ③ 清除图形屏幕内容,使用清屏函数,其调用格式如下: void cleardevice( ); 注:清除前景图形,不清除背景。 基本图形函数① 画点函数: 将点(x, y原创 2016-12-05 20:49:22 · 17827 阅读 · 0 评论 -
(26)二次插值样条曲线
在拟合生成样条曲线的众多方法中,首先来讨论用插值方法生成通过给定离散型值点的二次样条曲线,即抛物样条曲线。已知不在同一直线上的三点P1、P2、P3,要求通过给定的这三点定义一条抛物线。 二次样条曲线的参数化表达式为: P(t) = A1 + A2t + A3t2 (0≤t≤1) (4-原创 2017-01-01 21:49:06 · 22372 阅读 · 1 评论 -
(27)三次插值样条曲线
三次插值样条曲线在灵活性和计算速度之间进行了合理的折中。与更高次样条相比,三次插值样条只需较少的计算和存储,且较稳定。与二次插值样条相比,三次插值样条在模拟任意形状时显得更灵活。三次插值样条曲线由分段的三次多项式来描述。设其参变量为t,则分段三次插值样条曲线表达式的一般形式为: P(t) = B1 + B2t + B3t2 + B4t3 (0≤t≤tm原创 2017-01-01 22:25:12 · 8141 阅读 · 1 评论 -
(28)Bezier曲线和曲面
Bezier曲线的形状是通过一组多边折线(也称Bezier多边形或特征多边形)唯一定义出来的。 在多边折线的各顶点中,只有第一点和最后一点是在曲线上,其余顶点用来定义曲线的导数、阶次和形状。第一条边和最后一条边分别与曲线在起点和终点处相切。曲线形状趋于多边折线的形状。改变多边折线的顶点位置和曲线形状的变化有直观的联系。 Bezier曲线的数学表达式定义原创 2017-01-02 13:24:25 · 11460 阅读 · 0 评论 -
(3)直线的生成之数值微分法(DDA)
基本图形生成原理:是指在点阵输出设备(如显示器或打印机)上,如何快速地确定一个最佳逼近于理想图形的像素集,并用指定颜色把这些像素显示出来,该过程也被称为图形的扫描转换。‘’C 语言提供了一个对显示设备上的像素进行写操作的函数: putpixel (x, y, color); x 和 y 指定像素的位置坐标color指定像素的颜色。数值微分法(简称DDA法)基原创 2016-12-30 17:54:29 · 4036 阅读 · 0 评论 -
(4)直线的生成之中点画线法
基本原理:假定直线斜率0若M在Q上方,则P1离直线更近,应取P1为下一个像素;若M在Q下方,则P2离直线更近,应取P2为下一个像素;若M与Q重合,则P1或P2任取一点。这种以中点M作为判别标志的方法即为中点画线法。假设直线段的起点为(x1, y1),终点为(x2, y2)。设直线方程为:F (x, y)= ax + by + c =0其中:a = y原创 2016-12-30 19:14:47 · 13379 阅读 · 2 评论 -
(5)直线的生成之Bresenham画线算法
基本原理:假设直线斜率k在0~1之间,并且直线上当前已确定的一个像素点为(xk,yk)。则下一步需要在列xk+1上确定扫描线y的值。y值要么不变,要么递增1。令两个候选像素的y 值与线段上理想y 值的差值分别为d1和d2则有: d1 = y – yk = (k (xk + 1) +b) –yk (1式)原创 2016-12-30 22:58:25 · 895 阅读 · 0 评论 -
(6)圆的生成之中点画圆法
圆的特性 圆被定义为所有离一中心位置(xc, yc)距离为给定值r的点集,可用方程表示为: (x – xc)*(x – xc) +(y – yc)*(y – yc) = r*r圆的对称性已知一个圆心在原点的圆上一点为(x, y),根据对称性,可得另外七个8分圆上的对应点(y, x),(y, –x),(x, –y),(–x, –y),(–原创 2016-12-31 12:50:56 · 5801 阅读 · 0 评论 -
(7)椭圆的生成之中点画椭圆法
椭圆的特性下半部分(斜率小于–1):在y方向取单位步长,来确定下一个像素的位置。 改为形式:F (x, y) =b2x2+a2y2-a2b2= 0 (1式) 上半部分的条件是:2b2x 2y 下半部分的条件是:2b2x >= 2a2y中点画椭圆法1/4椭圆弧的上半部分:设当前已确定的椭圆弧上的像素点为P (xp, yp),则下一对候选像素为正右方H和右下原创 2016-12-31 13:48:15 · 4001 阅读 · 1 评论 -
(8)种子填充算法
两种连通区域 四连通区域:从区域内一点出发,可通过上、下、左、右四个方向的移动组合,在不越出区域的前提下,能到达区域内的任意像素 八连通区域:从区域内每一像素出发,可通过八个方向,即上、下、左、右、左上、右上、左下、右下移动的组合,在不越出区域的前提下,能到达区域内的任意像素。基本原理从多边形区域内部的某一像素点(称为种子)开始,由此出发找到区域原创 2016-12-31 14:02:28 · 15537 阅读 · 3 评论 -
(9)有序边表填充算法
基本思想对于一个给定的多边形,用一组水平扫描线进行扫描,对每一条扫描线均可求出与多边形的交点,这些交点将扫描线分割成落在多边形内部的区间和落在多边形外部的区间,并且两者相间排序。用要求的颜色显示这些区间的像素,即可完成填充工作。多边形顶点处的扫描线交点的处理:情况1:扫描线2与P6相交,若交点算一个,求得交点(x 坐标升序)序列P6 ,E,F。这将导致[P6, E]区间内的原创 2016-12-31 14:40:40 · 8141 阅读 · 0 评论 -
(10)边填充算法
基本思想:对每一条水平扫描线,依次求与多边形各边的交点,将该扫描线上交点右边的所有像素求补。对多边形的每条边作此处理,顺序随意。本算法的特点: 优点:简单易行; 缺点:对于复杂图形而言,一些像素的颜色值需反复改变多次,并且多边形外的像素处理过多,输入/输出的量比有序边表算法大得多。边填充算法的改进——栅栏填充算法 栅栏:指的是一条与水平扫描线垂直的直原创 2016-12-31 18:56:55 · 3164 阅读 · 0 评论 -
(25)曲线和曲面基础
曲线或曲面分为两大类:1)规则曲线或曲面:可以用一个确切的曲线或曲面方程式来表示。 比如,圆和球面、椭圆和椭球面、抛物线和抛物面、正弦曲线、摆线、螺线等。2)不规则曲线或曲面:不能确切给出描述整个曲线或曲面的方程,是由实际测量中得到的一系列离散数据点用拟合方法来逼近的。一般采用分段的多项式参数方程来表示,由此形成一条光滑连续的曲线或曲面,称为样条曲线或曲面。比如Hermite样条曲线或原创 2017-01-01 19:53:52 · 1788 阅读 · 0 评论