第二章 图形基元的显示 扫描转换 将图形描述转换成用象素矩阵表示的过程 图形基元(输出图形元素)图形系统能产生的最基本图形 线段、圆、多边形.

Slides:



Advertisements
Similar presentations
2.6 隐函数微分法 第二章 第二章 二、高阶导数 一、隐式定义的函数 三、可微函数的有理幂. 一、隐函数的导数 若由方程 可确定 y 是 x 的函数, 由 表示的函数, 称为显函数. 例如, 可确定显函数 可确定 y 是 x 的函数, 但此隐函数不能显化. 函数为隐函数. 则称此 隐函数求导方法.
Advertisements

1.2 偏导数与全微分 偏导数的概念 解 偏导数的求法(类似一元函数) ( 1 )固定一个变量,对另一个变量用一元函 数的公式法则求导.
人的性别遗传 合肥市第四十九中学 丁 艳. 男女成对染色体排序图 1 、男性和女性各 23 对染色体有何异同 ? 哪 一对被称为性染色体 ? 2 、这两幅图中,哪幅 图显示的是男性的染色 体?哪幅图显示的是女 性染色体? 3 、图中哪条染色体是 Y 染色体?它与 X 染色体 在形态上的主要区别是.
大学物理实验 第一讲 南昌大学物理实验中心 2013年2月.
XX啤酒营销及广告策略.
1、一般地说,在生物的体细胞中, 和 都是成对存在的。
辨性别 A B. 辨性别 A B 第三节人类染色体与性别决定 昌邑市龙池初中 杨伟红 学习目标 1.理解人的染色体组成和传递规律。 2.解释人类性别决定的原理。 3.通过探究活动,解读数据了解生男生女的比例。
§3.4 空间直线的方程.
《解析几何》 -Chapter 3 §7 空间两直线的相关位置.
第八章 向量代数 空间解析几何 第五节 空间直线及其方程 一、空间直线的点向式方程 和参数方程 二、空间直线的一般方程 三、空间两直线的夹角.
3.4 空间直线的方程.
4.6 定积分的应用 主要内容: 1.微元法. 2.平面图形的面积..
第二章 二次函数 第二节 结识抛物线
欢迎大家来到生命科学课堂.
跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾. 跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾.
清仓处理 跳楼价 满200返160 5折酬宾.
1.1.2 四 种 命 题.
增值评价 2014级 初中起点报告 解读培训 辽宁省基础教育质量监测与评价中心.
色 弱 與 色 盲.
第五章 定积分及其应用.
第四节 统计初步和数据整理 在这一节中我们将介绍统计学的基本知识。统计学是一门古老而又年轻的学科,例如为了征兵和收税的早期的人口统计,甚至在公元前就出现了。但是近代数理统计学,却主要是从20世纪初开始发展的。其主要特征是运用概率论的知识进行统计推断。即从所研究的全部对象中抽取部分个体,并通过对这部分个体的观察和分析,对全部对象的有关问题作出推断。数理统计学已经建立了一套系统的理论,有着广泛的应用。下面先介绍统计学中最基本的概念。
世上孩子都是宝, 男孩女孩都一样。.
宠物之家 我的宠物性别? 雌(♀) or 雄(♂) 第一阶段:我的宠物我做主 第二阶段:宠物“相亲记” 第三阶段:家族诞生
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
初中数学 九年级(下册) 5.3 用待定系数法确定二次函数表达式.
北师大版七年级数学 5.5 应用一元一次方程 ——“希望工程”义演 枣庄市第三十四中学 曹馨.
2.3 变量间的相关关系 变量之间的相关关系 两个变量的线性相关 第二课时.
海洋存亡 匹夫有责 ——让我们都来做环保小卫士 XX小学三(3)班.
第8章 回归分析 本章教学目标: 了解回归分析在经济与管理中的广泛应用; 掌握回归分析的基本概念、基本原理及其分析应用的基本步骤;
第三章 控制结构.
第三章 基 本 图 形 的 生 成 本 章 主 要 内 容 直线段的扫描转换算法 圆弧的扫描转换算法 多边形的扫描转换与区域填充 字符 裁剪
1 直线生成算法(DDA、BRES) 2 圆生成算法(Mid) 3 多边形填充算法(扫描线、区域)
第3章 二维线画图元的生成.
大綱: 列式問題 代入消去法 加減消去法 根的相關問題 顧震宇 台灣數位學習科技股份有限公司
§7.2 直线的方程(1) 1、经过两点P1(x1,y1),P2(x2,y2)的斜率公式: 2、什么是直线的方程?什么是方程的直线?
2.1.2 空间中直线与直线 之间的位置关系.
导数的应用 ——函数的单调性与极值.
二元一次聯立方程式 代入消去法 加減消去法 自我評量.
线段的有关计算.
第四章 基本图形生成算法 (一) 2019/4/21 Thank you for your time today.
7.4解一元一次不等式(1).
第四章 不定积分 第一节 不定积分的概念与性质 一、原函数与不定积分 二、不定积分的基本性质 三、不定积分的性质 四、不定积分的几何意义.
课前注意 课前注意 大家好!欢迎加入0118班! 请注意以下几点: 1.服务:卡顿、听不清声音、看不见ppt—管家( ) 2.课堂秩序:公共课堂,勿谈与课堂无关或消极的话题。 3.答疑:上课听讲,课后答疑,微信留言。 4.联系方式:提示老师手机/微信: QQ:
导入新课 在《数学3》中,我们对两个具有线性相关关系的变量利用回归分析的方法进行了研究,其步骤为: 画散点图 求回归直线方程
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
第四章 第四节 函数图形的描绘 一、渐近线 二、图形描绘的步骤 三 、作图举例.
1.2 子集、补集、全集习题课.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第 四 章 迴歸分析應注意之事項.
直线和圆的位置关系 ·.
O x y i j O x y i j a A(x, y) y x 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算.
第3章 多维随机向量及其分布 3.1 随机向量及其联合分布函数 3.2 二维离散型随机向量 3.3 二维连续型随机向量
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
河北省昌黎县第三中学李晓荣.
两个变量的线性相关 琼海市嘉积中学 梅小青.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
数学题解答 第二章 一元一次方程 2.1从算式到方程 (第1课时) 数学题解答
§2-2 点的投影 一、点在一个投影面上的投影 二、点在三投影面体系中的投影 三、空间二点的相对位置 四、重影点 五、例题 例1 例2 例3
线性回归.
4.6 图形的位似     观察思考:这两幅图片有什么特征? 都是有好几张相似图形组成,每个对应顶点都经过一点.
第八章 服務部門成本分攤.
第三章 基 本 图 形 的 生 成 本 章 主 要 内 容 直线段的扫描转换算法 圆弧的扫描转换算法 多边形的扫描转换与区域填充 字符 裁剪
选修1—1 导数的运算与几何意义 高碑店三中 张志华.
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
复习回顾 条件:不重合、都有斜率 条件:都有斜率 两条直线平行与垂直的判定 平行:对于两条不重合的直线l1、l2,其斜率分别为k1、k2,有
实验二 定积分的近似计算.
3.3.2 两点间的距离 山东省临沂第一中学.
§3.1.2 两条直线平行与垂直的判定 l1 // l2 l1 ⊥ l2 k1与k2 满足什么关系?
Presentation transcript:

第二章 图形基元的显示 扫描转换 将图形描述转换成用象素矩阵表示的过程 图形基元(输出图形元素)图形系统能产生的最基本图形 线段、圆、多边形

第一节 点扫描转换 第二节 直线扫描转换算法 第三节 圆的扫描转换算法 第四节 区域填充

第一节 点扫描转换 将一个图形区域的数学点(x,y)转换为在(x’, y’)的像素点,这里x和y都是实数,实现的方法之一是取x的整数部分作为x’,取y的整数部分为y’。也就是x’=Floor(x), y’= Floor(y)。

另一种方法是用像素坐标排列(x,y)所在坐标系统的整数值;转换时,使用x’=Floor(x+0. 5)和y’=Floor(y+0 另一种方法是用像素坐标排列(x,y)所在坐标系统的整数值;转换时,使用x’=Floor(x+0.5)和y’=Floor(y+0.5), 这种情况把(x,y)所在坐标系统的原点放在像素(0,0)的中心。 满足:x’-0.5≤ x <x’+0.5; y’-0.5≤ y <y’+0.5。

第二节 直线扫描转换算法 直接使用直线方程转换 DDA直线扫描转换算法 中点画线法 Bresenham画线算法

直接使用直线方程转换: 设待画线段两端点的坐标值(x1,y1)和(x2,y2),假定 x1<x2 y=mx+b m=(y2-y1)/(x2-x1) b=(x2y1-x1y2)/(x2-x1) 如果 对所有在x1和x2开区间之间的整数代入方程得到y值;

如果 对所有在y1和y2开区间之间的整数代入方程得到x值,最后生成扫描转换的坐标(x’,y’)。

DDA直线扫描转换算法: 数字微分分析算法(DDA)是一 种增量扫描转换方法,每一步要 用到上一步的结果。

当 时,对x每增加1取允许的各整数值,用y=mx+b求y后取整;

void DDALine(int x1,int y1,int x2,int y2) { double dx,dy,e,x,y; dx=x2-x1; dy=y2-y1; e=(fabs(dx)>fabs(dy))?fabs(dx):fabs(dy); dx/=e; dy/=e;

x=x1; y=y1; for(int i=1;i<=e;i++) { SetPixel((int)(x+0.5), (int)(y+0.5)); x+=dx; y+=dy; }

中点画线法:

假定直线斜率在0、1之间 x= xi时已选(xi,yi)象素 x= xi +1与直线最近的象素P1 ( xi + 1,yi )、 P2 ( xi+1,yi+1) M表示P1与P2的中点 M = ( xi+1,yi +0.5)。 Q是直线与垂直线x = xi + 1的交点 显然,若M在Q的下方,则P2离直线近,应取为下一个象素

中点画线法的实现: 起点和终点分别为 ( x0 , y0 ) 和( x1 , y1 )。 F(x , y) = ax + by + c = 0 其中,a=y0-y1,b=x1-x0,c=x0y1-x1y0 。 直线上的点,F (x,y) = 0 ; 直线上方的点,F(x,y)>0 ; 直线下方的点,F(x,y)<0。

Q在M 的上方还是下方,只要把M 代入F(x,y),并判断它的符号。 d = F(M ) = F( xi+1,yi+0.5 ) =a ( xi+1 ) + b ( yi+0.5 ) + c 当 d < 0 时,M 在直线下方(即在Q的下方) ,应取右上方的P2 。 而当d > 0,则取正右方的P1。 当d=0时,二者一样合适,取P1。

d1 = F ( xi+2 ,yi+0.5 ) = a ( xi+2 ) + b ( yi+0.5 ) +c = d + a d≥0 时,取正右方象素P1 ,判断再下一个象素应取那个,应计算 d1 = F ( xi+2 ,yi+0.5 ) = a ( xi+2 ) + b ( yi+0.5 ) +c = d + a 故d的增量为a。 而若d<0,则取右上方向素P2。要判断下一个象素,则要计算

d2 = F ( xi+2,yi+1.5 ) = a ( xi+2 ) + b ( yi+1.5 ) + c = d + a + b 故在第二种情况,d的增量为a + b 再看d的初始值。显然,第一个象素应取左端点(x0,y0),相应的判别式值为

但由于(x0,y0)在直线上,故F(x0,y0)=0。 因此,d的初始值为d0 = a+0.5b d0 = F (x0 +1,y0 +0.5 ) =a( x0 +1 )+b( y0 +0.5 )+c = a x0 + b y0 + c + a + 0.5b =F ( x0,y0 ) + a + 0.5b 但由于(x0,y0)在直线上,故F(x0,y0)=0。 因此,d的初始值为d0 = a+0.5b 考虑用2d来代替d的计算

void MidpointLine (int x0,int y0,int x1,int y1) { int a,b,delta1,delta2,d,x,y ; a = y0 - y1; b = x1 - x0; d = 2 * a + b ; delta1 = 2 * a ; delta2 = 2 *( a + b);

x = x0 ; y = y0 ; SetPixel(x,y); while( x<x1 ) { if( d<0 ) x ++; y ++;

d+= delta2; } else { x ++; d+= delta1; SetPixel(x,y); } /* while */ }/* MidpointLine */

作为一个例子,我们来看中点画线法如何光栅化一条连接两点(0,0)和(5,2)的直线段。由于(x0,y0)=(0,0)且(x1,y1)=(5,2),直线斜率k = 2/5 满足0≤k≤1,所以,可以应用上述算法。

第一个象素应取线段左端点(0,0)。判别式d的初始值为d0 = 2 第一个象素应取线段左端点(0,0)。判别式d的初始值为d0 = 2 * a + b = 1(∵a = y0 -y1 = -2,b = x1 - x0 = 5)。d 往正右方向的增量Δ1 = 2a = -4;d 往右上方的增量Δ2 = 2(a + b)= 6。 由于d0>0,所以迭代循环的第一步取初始点的正右方象素(1,0),x递增1,并将d更新为:d = d0 +Δ1=1-4 = - 3。

因为x=1<x1,所以进入第二步迭代运算。这时由于d<0,故取右上方象素(2,1),x、y同时递增1,并将d更新为:d = - 3+Δ2 = 3,这样继续分析下去知x、y、d的初值和循环迭代过程中每一步的值依序如下:

(0,0)、(5,2), a = y0 -y1 = -2,b = x1 - x0 = 5)d0 = 2 * a + b = 1 1 -3 2 3 -1 4 5  

Bresenham画线算法 : Bresenham提出了一个更好的算法,算法中可以只用整数运算,自然也不必有四舍五入。为了说明简便,假定直线斜率m在0到1之间,并且 。

设在第i步已经确定第i个象素点是 ,它是直线上点 的最接近位置 ,现在看第i+1步如何确定第i+1个象素点的位置。

,下一个象素点取 ,下一个象素点取 ,取两象素点中的任意一个

,应取

,应取 确定P1 , 令i=1,可计算求出:

void BresenhamLine(int x1,int y1,int x2,int y2) { int x,y,dx,dy,p; x=x1; y=y1; dx=x2-x1; dy=y2-y1; p=2*dy-dx; for(;x<=x2;x++)

SetPixel(x,y); if(p>=0) { y++; p+=2*(dy-dx); } else { p+=2*dy; 演示