290 likes | 458 Views
第 3 章 二维图形生成. 点的位置可以用一个向量来表示: 如二维的点:[ x y ] 三维的点:[ x y z ] 那么要改变一个点的位置,就意味着 要改变这个向量 (大小及方向) 。. 第三节 自由曲线. 在我们工程中应用的拟合曲线,一般 地说可以分为两种类型:一种是最终 生成的曲线通过所有的给定型值点, 比如抛物样条曲线和三次参数样条曲 线等,这样的曲线适用于插值放样; 另一种曲线是,它的最终结果并不一 定通过给定的型值点,而只是比较好 地接近这些点,这类曲线(或曲面) 比较适合于外形设计。.
E N D
点的位置可以用一个向量来表示: 如二维的点:[xy] 三维的点:[xyz] 那么要改变一个点的位置,就意味着 要改变这个向量(大小及方向)。 第三节 自由曲线
在我们工程中应用的拟合曲线,一般 地说可以分为两种类型:一种是最终 生成的曲线通过所有的给定型值点, 比如抛物样条曲线和三次参数样条曲 线等,这样的曲线适用于插值放样; 另一种曲线是,它的最终结果并不一 定通过给定的型值点,而只是比较好 地接近这些点,这类曲线(或曲面) 比较适合于外形设计。
因为在外形设计中(比如汽车、船舶), 初始给出的数据点往往并不精确;并 且有的地方在外观上考虑是主要的, 因为不是功能的要求,所以为了美观 而宁可放弃个别数据点。因此不须最 终生成的曲线都通过这些数据点。 另一方面,考虑到在进行外形设计时 应易于实时局部修改,反映直观,以 便于设计者交互操作。第一类曲线在 这方面就不能适应。
法国的Bezier 为此提出了一种新的 参数曲线表示方法,因此称为Bezier 曲线。后来又经过Gordon、Forrest 和Riesenfeld等人的拓广、发展, 提出了B样条曲线。 这两种曲线都因能较好地适用于 外形设计的特殊要求而获得了广泛的 应用。
一抛物线参数样条曲线 x*= v0 •T y*= 0.5 •G •T •
二、HERMITE曲线 a1 a2 0 b1 b2 0 c1 c2 1
三、三次参数样条曲线: 矩阵为: 1 0 0 0 -1 0 0 0 1
四、Bezier曲线 Bezier曲线的形状是通过一组多边折 线(特征多边形)的各顶点唯一地定 义出来的。在这组顶点中: (1) 只有第一个顶点和最后一个顶点 在曲线上; (2) 其余的顶点则用于定义曲线的导 数、阶次和形状; (3) 第一条边和最后一条边则表示了 曲线在两端点处的切线方向。
二、B样条曲线 1.从 Bezier 曲线到B样条曲线 (1) Bezier 曲线在应用中的不足: 缺乏灵活性 一旦确定了特征多 边形的顶点数(m个),也就决定了曲 线的阶次(m-1次),无法更改; 控制性差 当顶点数较多时,曲 线的阶次将较高,此时,特征多边形 对曲线形状的控制将明显减弱;
不易修改 由曲线的混合函数可 看出,其值在开区间 ( 0 , 1 ) 内均不为 零。因此,所定义之曲线在 ( 0 < t < 1) 的区间内的任何一点均要受到全部顶 点的影响,这使得对曲线进行局部修 改成为不可能。 (而在外形设计中,局部修改是随时要进行的)
为了克服 Bezier 曲线存在的问题, Gordon 等人拓展了Bezier曲线,就 外形设计的需求出发,希望新的曲线 要:易于进行局部修改; 更逼近特征多边形; 是低阶次曲线。 于是,用 n次B样条基函数替换了伯 恩斯坦基函数,构造了称之为B样条 曲线的新型曲线。
n=2,二次B样条曲线 m+n+1个顶点,三 点一段,共m+1段。 i=1 P1,2(t) i=0 P0,2(t)
在图形系统这部分内容中,我们已经 介绍了图形输出设备的工作原理。即 无论是画点设备或画线设备,其输出 的图线都不是连续的,而是由离散的 点或是折线近似地组成。 (两种字符) 4.1矢量字符的存储与显示
正因为如此,所以输出图线的质量就 决定于两个因素: 图形输出设备的精度(分辨率或 步距); 离散点(或走步)组合方案的科 学性和先进性。
对于图形输出设备的精度,理论上讲 当然是越高越好,但精度越高的设备 价格也越高,所以不可能无限追求。 就绘图机来讲,常用的绘图机的步距 在 0.1~0.02mm 之间,更精密的绘图 机的步距可达到 0.005 ~ 0.001mm。 一般来说,0.05mm的步距可使肉眼觉察 不出折线阶梯状的波动,0.01mm的步 距已可以满足于精密绘图的要求了。
另一个问题就是能否选择出最佳的组 合方式来逼近理想线条,这就是要讨 论所谓的 插补算法 。比较常用的插 补算法有 逐点比较法 、 正负法 和 数 值微分分析(DDA)法 等。 由于在一般的图形中,图主要是由基 本图形直线段和圆弧组成的,因此, 直线和圆弧的插补运算方法是最基本 的方法。
基本图形生成算法 就是介绍如何用 插补算法生成诸如直线、圆弧和文字 等基本图形的方法。这里,我们以逐 点比较法生成直线和圆弧为例。 所谓的逐点比较法,就是在绘图的过 程中,绘图笔每走一步就与规定图形 进行偏差比较,然后决定下一步的走 向。这样用步步逼近理想线条的方法 画出规定的图形。
逐点比较法的执行过程 开始 偏差判别 画笔走步 偏差计算 终点判断 (N) (Y) 结束
偏差判别:判断画笔的当前位置与规 定图形的位置之间的偏差,以确定画 笔下一步的走步方向。 画笔走步:画笔在X或Y向走一步。 终点判断:判断画笔的当前位置是否 是规定图形的终点。 偏差计算:计算画笔在当前位置上与 规定图形之间的偏差。
一、用逐点比较法生成直线 在用逐点法生成直线的过程中,要对 处于不同位置的直线和画笔,规定一 个合理的走笔方向,并讨论偏差的计 算方法。 4.2点阵字符的存储与显示
第5节 区域填充 1种子填充算法 设置一个计数器,记录下画笔应走的 总步数:N=X/S+ Y/S X:直线段在X向的增量(X=|xa|)。 Y:直线段在Y向的增量(Y=|ya|)。 S: 绘图机步长。 故终点判断为 N=(|xa|+|ya|)/S ; 任何方向走一步后, N=N-1 ; 直至 N=0。
4。6。3多边形裁剪 直线是分四 个象限来考虑的,而因为多边形除了有 象限的不同外,还有顺时针画和逆时 针画的方向之间的差别。所以, 多边形时要分八种情况来考虑。
2扫描转换填充算法 要分顺、逆,四个象限共八种情况:
2.偏差计算规则 在圆弧的插补中,偏差的比较量是半 径。 圆的半径: 画笔所在点的半径: (规定圆心在原点) 显然:Rp>R 笔在圆外 Rp<R 笔在圆内 偏差:=Rp–R