
清华大学 第三章:计算机图形技术.ppt
108页1,,本课程的内容,土木工程CAD技术基础,,CAD基础知识,CAD系统基本原理,土木工程CAD相关技术,土木工程CAD系统设计,第1章 引言 第2章 CAD系统概论 第3章 计算机图形技术 第4章 AutoCAD应用技术 第5章 三维几何造型 第6章 人机交互技术 第7章 工程分析与优化设计 第8章 工程数据处理与交换 第9章 土木工程CAD系统开发 第10章 现代CAD技术,参照“教学日历”,,,,,,,,,,2,第3章 计算机图形技术,3.1 概述 3.2 图形生成 3.3 图形几何变换 3.4 图形显示处理 3.5 工程制图程序的设计,3,3.1 概述,计算机最初用来进行计算的,,图形生成,在计算机中把图形显示出来,图形几何变换,实现在计算机中平移、旋转、放大、缩小图形,图形显示处理,通过窗口来看图形:哪些可以看到,哪些不可以看到,工程制图程序设计,设计用于工程制图的程序的方法:综合应用上述方法,,,,,,,,4,3.2 图形生成,3.2.1 常用的坐标系 有 4 种 1. 用户坐标系 用户描述或输入图形所用的坐标系 直角坐标系:取值范围为实数域,单位任意 2. 设备坐标系 图形设备输出图形用的坐标系 二维坐标:取值范围为整数域,单位为光栅 单位或脉冲当量,5,3. 规格化坐标系 是虚拟坐标系,与设备无关 通常用无量纲单位 4. 观察坐标系 是为了观察三维形体的投影而采用的坐标系,6,3.2.2 基本图形元素(Basic Graphic Element) 取决于图形输出设备,分为 2 类: 1. 矢量图形(Vector Graphics) 以水平和垂直直线段作为基本图形元素 对应设备:随机扫描显示器,笔式绘图仪 2. 光栅图形(Raster Graphics) 以点作为基本图形元素 对应设备:光栅扫描显示器, 静电绘图仪,喷墨绘图仪,7,3.3.3 生成直线的算法 如何画出任意直线? 对于矢量图形 任意斜直线用x、y方向 直线组合成的阶梯线近似 对于光栅图形 使象素点发亮来 最佳逼近直线,8,3.2.3.1 光栅图形直线的生成 确定最佳逼近于该直线的一组象素 按扫描线顺序,用当前写方式 对这些象素进行写操作 如何逼近? 数值微分法(DDA法) 中点画线法 Bresenham法,9,3.2.3.2 生成具有属性的直线 直线的属性一般包括 3 个 1. 线宽 一般在设备坐标系中定义 把设备能产生的最小直线宽度作为基准 再定义2倍宽或4倍宽的直线 2. 颜色 取决于操作系统和设备能够提供的颜色,10,3. 线型 生成算法:以虚线为例,SL,,11,分为以下 3 步1. 计算直线长度:2. 设线段长部分和: dem = 0 x0 = x1 , y0 = y13. dem = dem + dyl 若dem > SL,则连线 (x1 , y1 ) →(x2 , y2 ) 若dem < SL,则 tx = x0+ dem * cos(ang) ty = y0+ dem * sin(ang) 连线 (x1 , y1 ) →(tx , ty),12,4. dem=dem+dkl 若dem > SL,则返回 若dem < SL,则 x1=x0+dem * cos(ang) y1=y0+dem * sin(ang) 返回步骤 3,13,说明 1. 在计算机图形中 直线是最基本的应用图形元素 曲线、字符、标注等可以从直线生成 2. 直线生成算法的应用 一般编程环境均提供画有属性的直线的功能 算法实际上在编程环境实现中得到应用 编制应用程序时不会使用,14,3.2.4 生成直线图形的算法 主要直线图形 折线 矩形 矩形网格 正多边形 标高线 尺寸线,15,3.1.4.1 矩形的生成 按输入变量形式分类,主要有2种 1. 两点式 已知左下角点及对角点 和与水平轴夹角 2. 点差式 已知左下角点、边长 及与水平轴的夹角,,16,两点式画矩形的算法 设Cs = cos(ang),Sn = sin(ang),则,17,3.2.4.2 正多边形的生成 分为 2 种 1. 凸多边形 已知:边数 n,外接圆半径R 圆心(x0, y0 ) 起始点与圆心的方向角α,各顶点坐标: xi = x0 + Rcos (α+i△θ) yi = y0 + Rsin (α+i△θ) 其中△θ=2π/n,18,2. 凹多边形 已知: P1 , P3, P5…为内顶点,位于内接圆上, Ps, P2, P4…为外顶点,位于外接圆上, n为外顶点数,外接圆 半径R,内接圆半径R1 方法:用R1和 R分别计算 内外顶点,再连线。
19,注意: 1. 边数范围:2n > 4 2. 循环次数:2n 3. 角度增量:△θ=π/n 4. 偶数点为外顶角,奇数点为内顶角,20,3.2.5 生成曲线图形的算法 生成曲线方法有2种 1. 曲线插补法 相当于生成直线用的最佳逼近法等 e.g. 对应于圆有 中点画圆法及Bresenham画圆法 2. 用一系列直段逼近一条曲线 这是我们需要讨论的,21,3.2.5.1 曲线的表示方法 曲线的表示方法有3种 1. 显式表示(Explicit Expression) y = f(x) e.g. y = mx+b 2. 隐式表示(Implicit Expression) f(x, y) = 0 e.g. ax2+2bxy+cy2+2dx+2ey+f = 0,22,从计算机图形学看 上述两种方法存在的问题 A. 与坐标轴相关 B. 会出现斜率为无穷大的情形(如垂线) C. 对于非平面曲线,难以用常系数的表达式表示 D. 不便于计算和编程,23,3. 参数表示(Parametric Expression) x = x(t), y = y(t) 通常取 t 在[0, 1]内变化 用矢量表示 p(t) = [x(t), y(t)] e.g. 通过(x1, y1)和(x2, y2)的直线的 参数表示 x(t) = x1+(x2-x1)t, y(t) = y1+(y2-y1)t e.g. 圆心为原点,半径为1的圆的参数表示 x(t) = (1-t2)/(1+t2), y(t) = 2t/(1+t2),24,显式和参数形式:比较绘制圆弧,25,参数形式比显式和隐式有更多优越性 1. 有更多自由度来控制曲线形状 e.g. y = ax2+bx2+cx+d vs. x = at2+bt2+ct+d y = et2+ft2+gt+h 2. 便于处理斜率无穷大问题 3. 规格化的 t 使其相应的几何分量是有界的 4. 易于用矢量和矩阵表示几何分量,简化计算,,26,3.2.5.2 曲线参数拟合 Parametric Fitting of Curve 曲线拟合问题 已知离散点 求反映这些点的变化的 曲线 主要包括 2 种类型 插值:曲线通过型值点 逼近:插值是其特例,27,利用二次曲线进行拟合 二次曲线的一般表示 Ax2+Bxy+Cy2+Dx+Ey+F = 0 参数表示 其中a0、a1、a2为常数矢量, e1、e2为常数 特例:抛物线 e1 =e2 =0;椭圆 e1 =0, e2 =1; 双曲线 e1 =1, e2 =0,(1),28,明确拟合条件:3个 1. 型值点 3个:P1, P2, P3 2. 1 条二次曲线 3. 边界条件:满足 t = 0时 过P1点, 且与P1P2相切 t = 1时 过P3点, 且与P2P3相切,29,根据边界条件确定有关常数向量 对(1)式求导,并带入边界条件得:,30,将参数表示替换成代数方程 即,代入 P1 -> (x1, y1) T , P2 -> (x2, y2) T P3 -> (x3, y3) T a0 -> (C1, C2)T a1 -> (B1, B2)T a2 -> (A1, A2)T 可得: 8个方程, 8个未知数 -> 可求解,,已知,,未知,31,通过解方程,确定有关常数向量的参数如下,,(2),32,利用参数画出曲线的步骤 1. 在e1和e2既知的条件下 将(2)代入(1)式, 可得到拟合曲线段的参数方程 2. 针对 t∈[0, 1] 按步长△t 循环 逐段画直线 最终画出的线即可逼近拟合曲线段,33,具体地,来看一下抛物线,,,34,抛物线的特性 1. 在t=1/2处的切线平行于P1P3连线 2. 在t=1/2处的P2为P2P13连线的中点 利用上述特性 作为边界条件 可用P2来表示 参数 见下页面,,,35,抛物线参数的另外一种表达,,,(3),36,3.2.5.3 抛物线样条曲线(Parabola Spline Curve) 问题的提出 多点的拟合 设离散点 Pi (i =1, 2, 3,…, m),每经过三点作一条抛物线,共作m-2条 一般来说,在两条抛物线段的重叠区间,它们不可能完全重合,37,第 i 条抛物线的表达式 第 i +1条抛物线的表达式,(4),(5),整理(3)式得到,38,拟合曲线的目的 全部型值点列用一条光滑的曲线连接起来 采取的方法:抛物线样条曲线 在Si和Si+1的共同区间中 让两条曲线段按一定规则,结合成一条曲线 结合的办法是加权合成 设两个权函数分别为f1(T)和f2(T),取 f1(T) = 1-T f2(T) = T (0≤T ≤1),,(6),39,加权后的曲线为 pi+1(t) = f1(T) ·Si(ti)+f2(T) ·Si+1(ti+1) 对式(4)-(7)中的参变量进行统一 选择 t 作为统一后的参变量 可统一为 T = 2t ti = 0.5+t (0 ≤ t ≤ 0.5) ti+1 = t,(7),,(8),40,由式(4)-(8)可以求得 pi+1(t) = (-4t3+4t2-t)pi + (12t3-10t2+1)pi+1 + (-12t3+8t2+t)pi+2 + (4t3-2t2)pi+3 (0 ≤ t ≤ 0.5) 即:相邻4个点可确定中间一段抛物线样条曲线,(9),41,抛物线样条曲线的端点条件 在全部点列 pi (i = 1, 2, …, n)中, 可得到n-3段抛物线样条曲线 只有首尾两段( p1 p2 和pn-1 pn) 由于缺乏连续相邻4点的条件而无法确定 解决方法 在原点列的两端各增加一个辅助点 p0 和 pn+1,42,两种加点方法 1. 已知两段的切矢 p0 = p2 – p1’ , pn+1 = pn-1 – pn’ 2. 自由端条件 p0 = p1 , pn+1 = pn,。












