第三章 二维图形基础

合集下载

4第三章二维图形的编辑方法(一)

4第三章二维图形的编辑方法(一)

4第三章⼆维图形的编辑⽅法(⼀)第三章⼆维图形的编辑⽅法(⼀)课程: AutoCAD2006 应⽤教程授课⽇期: 2006 年⽉⽇第 4 周导⾔:上节课介绍了⼆维图形的绘制⽅法,⽽AutoCAD不仅有强⼤的作图能⼒,还有强⼤的编辑功能,本节课开始介绍⼆维图形的编辑⽅法。

在绘图时,单纯的使⽤绘图命令或绘图⼯具,只能绘制⼀些基本的图形对象。

为了绘制复杂图形,很多情况下都必须借助于图形编辑命令。

1、选择对象直接拾取只需将拾取框移动到希望选择的对象上,并单机⿏标即可。

对象被选择后,会以虚线形式显⽰。

选择全部对象在“选择对象”提⽰下输⼊“ All ”后按“ Enter ”键, AutoCAD 将⾃动选中屏幕上的所有对象默认矩形窗⼝拾取⽅式将拾取框移动到图中空⽩地⽅并单击⿏标,在该提⽰下将光标移到另⼀个位置后单击, AutoCAD ⾃动以这两个拾取点为对⾓点确定⼀个矩形拾取窗⼝。

如果矩形窗⼝是从左向右定义的,那么窗⼝内部的对象均被选中,⽽窗⼝外部以及与窗⼝边界相交的对象不被选中;如果窗⼝是从右向左定义的,那么不仅窗⼝内部的对象被选中,与窗⼝边界相交的那些对象也被选中。

矩形窗⼝拾取⽅式在“选择对象:”提⽰下输⼊“ W ”并按 Enter 键, AutoCAD 会依次提⽰⽤户确定矩形拾取窗⼝内所有对象。

在使⽤矩形窗⼝拾取⽅式时,⽆论是从左向右还是从右向左定义窗⼝,被选中的对象均为位于窗⼝内的对象。

交叉矩形窗⼝拾取⽅式在“选择对象:”提⽰下输⼊“ C ”并按 Enter 键, AutoCAD 会依次提⽰确定矩形拾取窗⼝的两个⾓点,确定矩形拾取窗⼝的两个⾓点后,所选对象不仅包括位于矩形窗⼝内的对象,⽽且也包括与窗⼝边界相交的所有对象。

不规则窗⼝的拾取⽅式在“选择对象:”提⽰下输⼊“ WP ”后按 Enter 键,根据提⽰确定出不规则拾取窗⼝的其他个顶点位置后按 Enter 键, AutoCAD 将选中由这些点确定的不规则窗⼝内的对象。

二维图形详解

二维图形详解

对称于XOY平面 [x' y' z' 1] = [x y -z 1]=
1 0 0 0
[x
y
z
1]
0 0
10 0 -1
0 0
0 0 0 1
对称于YOZ平面 [x' y' z' 1] = [-x y z 1]=
对称于XOZ平面 [x' y' z' 1] = [x -y z 1]=
二维图形的显示流程图
齐次坐标
所谓齐次坐标表示法就是由n+1维向量表示
一个n维向量。如n维向量(P1,P2, … ,Pn)表示
为(hP1,hP2, hPn,h). 1、h可以取不同的值,所以同一点的齐次 坐标不是唯一的。 如普通坐标系下的点(2,3)变换为齐次坐标 可以是(1,1.5,0.5)(4,6,2)(6,9,3)等等。 2、 普通坐标与齐次坐标的关系为“一对多” 由普通坐标h→齐次坐标 由齐次坐标÷h→普通坐标 3、 当h=1时产生的齐次坐标称为“规格化 坐标”,因为前n个坐标就是普通坐标系下 的n维坐标。
a2 b2 0
0
0 0
0 0
1 0 0 1
绕任意轴的旋转变换
2)让在XOZ平面上的ON绕y轴旋转-γ,使之与z轴重
合。其中

sin a
因此
a2 c2
cos c
a2 c2
cos 0 sin 0
R
y


0 sin
5)ON轴绕z轴旋转α R z
因此
T R z R y R z R y R z
b) 绕任意轴的旋转变换 上 面 的 ON 轴 若 不 过 原 点 , 而 是 过 任 意 点

第三章 二维绘图基础

第三章 二维绘图基础

计算机图形学 二维绘图
5 应用举例
例:描绘函数 y=sin(2x)*e-0.1x 的图像,x的取值范围为 [0,10],最大限度显示在屏幕上。
算法:
w1=0; w2=10; w3=-1; w4=1; v1=0; v2=1024; v3=768; v4=0; a1=(v2-v1)/(w2-w1); b1=(v1*w2-v2*w1)/(w2-w1); a2=(v4-v3)/(w4-w3); b2=(v3*w4-v4*w3)/(w4-w3); x=0; y=sin(2*x)*exp(0.1*x); xe=a1*x+b1; ye=a2*y+b2; moveto (xe, ye) for (x=0; x<=10; x=x+0.1) { y=sin(2*x)*exp(0.1*x); xe=a1*x+b1; ye=a2*y+b2; lineto (xe, ye) }
计算机图形学 二维绘图
2 窗口(Window) 在用户坐标系内取一个矩形框,矩形框内 包含着人们研究的图形,或者包含着人们感 兴趣的图形部分.这个矩形框称为窗口(见图). 窗口由四个变量确定,w1,w2,w3,w4, 单 位取决于用户单位。
W2,W4
窗口
W1,W3
计算机图形学 二维绘图
3 视见区(Viewport) 在屏幕域取一个矩形框,将图形显示在这 个矩形框内,这个矩形框称为视见区(见图)。 视见区由四个变量确定,v1,v2,v3,v4, 单位 为屏幕像素单位。
计算机图形学 二维绘图
2 画点命令 命令格式:putpixel( x, y, color ) 功能:把位置为( x, y )的点置为 color 所 代表的颜色。 例如: putpixel( 100, 50, RED ) 把位置为( 100, 50 )的点置为红色。

二维形的分类与计算知识点总结

二维形的分类与计算知识点总结

二维形的分类与计算知识点总结二维形指的是平面上的图形,它们是由点、线和曲线组成的。

在数学中,我们可以通过对二维形进行分类来更好地理解和应用数学知识。

同时,对于二维形的计算也有一些特定的知识点需要掌握。

本文将对二维形的分类与计算知识点进行总结,帮助读者更好地掌握这些内容。

一、二维形的分类1. 根据几何特征的分类根据二维形的几何特征,可以将其分为以下几类:(1)点:点是二维形的最基本元素,没有大小和形状。

(2)线段:线段是由两个点连接而成的,具有长度和方向。

(3)直线:直线是没有端点且无限延伸的线段。

(4)射线:射线有一个端点并且无限延伸。

(5)曲线:曲线是由多个点连成的弯曲的线。

(6)多边形:多边形是由多个线段连接而成的封闭图形。

2. 根据边数的分类根据二维形的边数,可以将其分为以下几类:(1)三角形:三角形是由三条线段连接而成的多边形。

(2)四边形:四边形是由四条线段连接而成的多边形。

(3)五边形:五边形是由五条线段连接而成的多边形。

(4)六边形:六边形是由六条线段连接而成的多边形。

3. 根据角度的分类根据二维形的角度,可以将其分为以下几类:(1)锐角三角形:三个内角都是锐角的三角形。

(2)直角三角形:三个内角中有一个是直角的三角形。

(3)钝角三角形:三个内角中有一个是钝角的三角形。

(4)等边三角形:三个内角都是60度的三角形。

4. 根据对称性的分类根据二维形的对称性,可以将其分为以下几类:(1)对称图形:对称图形具有中心对称和轴对称两种形式。

(2)非对称图形:非对称图形没有对称轴或中心。

二、二维形的计算知识点1. 面积计算计算二维形的面积是数学中非常重要的一部分。

不同形状的二维形,其面积计算公式也各不相同。

(1)三角形的面积计算公式为:面积 = 底边长 ×高 / 2。

(2)矩形的面积计算公式为:面积 = 长 ×宽。

(3)圆的面积计算公式为:面积= π × 半径²。

AutoCAD绘图-第三章编辑二维图形

AutoCAD绘图-第三章编辑二维图形

AutoCAD绘图
3.2 图形的修改:
3.2.1 删除图形 •命令执行方式——选择【修改】|【删除】命令, 或单击【删除】按钮,或在命令行输入ERASE。 •常用方式——选择对象,然后按Delete键。
3.2.2 拉伸图形 •命令执行方式——选择【修改】|【拉伸】命令, 或单击【拉伸】按钮,或在命令行输入STRETCH。 •关键词——基点、位移。 •作用——对对象选定的部分进行拉伸,而不改变 没有选定的部分。
练习:对螺母 进行复制操作
中间过程
AutoCAD绘图
3.2.11 镜像图形 镜像命令是将选定的对象沿一条指定的直线对称 复制,复制完成后可以删除源对象,也可以不删除源 对象。 • 命令执行方式——选择【修改】|【镜像】命令, 或在【修改】工具栏中单击【镜像】按钮,或在 命令行里输入MIRROR。
练习:使用 镜像命令绘 制图形
镜像对象
对称轴
中间过程
AutoCAD绘图
3.2.12 偏移图形 偏移图形命令可以根据指定距离或通过点,创建 一个与原有图形对象平行或具有同心结构的形体。 •命令执行方式——选择【修改】|【偏移】命令, 或单击【偏移】按钮,或在命令行里输入OFFSET。 •关键词——偏移距离、偏移方向。 •类型——平行偏移、同心偏移。
AutoCAD绘图
本章小结:
•了解图形对象移动和旋转的方法
•了解对图形对象进行修改的种方法的 使用 •了解夹点的编辑方法
平行 偏移
同心 偏移
AutoCAD绘图
3.2.13 阵列图形 绘制多个在X轴或是Y轴上是等间距分布,或者是 围绕一个中心旋转的图形时,用户可以使用阵列命令。 •命令执行方式——选择【修改】|【阵列】命令, 或在【修改】工具栏中单击【阵列】按钮,或在 命令行里输入ARRAY。 •类型——矩形阵列、环形阵列。

二维几何形知识点总结

二维几何形知识点总结

二维几何形知识点总结在数学中,二维几何形是指只具有长和宽两个维度的图形。

在本文中,我们将总结一些常见的二维几何形,并讨论它们的性质和应用。

一、点(Point)点是二维几何中最基本的元素,它不具有长度、宽度和面积。

点通常用大写字母表示,例如点A、点B等。

在二维平面坐标系中,点可以通过坐标表示,例如点A(2, 4)表示坐标为(2, 4)的点A。

二、直线(Line)直线是由无数个点组成,它没有起点和终点,并且在两个方向上无限延伸。

直线可以用两个点确定,也可以用一般方程式来表示。

例如,通过点A(2, 3)和点B(5, 7)可以确定一条直线AB。

三、线段(Line Segment)线段是直线的一部分,具有起点和终点。

线段的长度可以通过两个点之间的距离来计算。

例如,线段AB表示起点为A、终点为B的线段。

四、射线(Ray)射线由一个起点和一个方向确定,从起点出发沿着给定方向无限延伸。

射线可以用其起点和沿着的方向来表示。

例如,从点A(3, 2)出发,沿着向右上方的方向延伸的射线可以表示为从点A开始的射线。

五、角度(Angle)角度是由两条射线的公共起点和旋转方向确定的图形。

角度通常用大写字母表示,例如∠ABC表示由射线AB和射线BC所夹的角度。

角度可以通过度数(°)或弧度(rad)来度量。

六、三角形(Triangle)三角形是由三条线段组成的多边形。

根据边长和角度的不同,三角形可以分为等边三角形、等腰三角形、直角三角形等。

三角形的性质包括三个角的和为180°、任意两边之和大于第三边等。

七、矩形(Rectangle)矩形是由四条边和四个直角组成的四边形。

矩形的性质包括相对边相等、对角线相等且互相平分等。

矩形的面积可以通过长乘以宽来计算。

八、正方形(Square)正方形是一种特殊的矩形,具有相等的边长和四个直角。

正方形的性质包括边长相等、对角线相等、内角为90°等。

正方形的面积可以通过边长的平方来计算。

二维图形的认识与分类

二维图形的认识与分类

二维图形的认识与分类在数学中,二维图形是指仅有两个维度(长度和宽度)的平面上的形状或图案。

对二维图形进行正确的认识和分类是学习数学和几何的基础。

本文将详细介绍二维图形的认识与分类,以帮助读者更好地理解和应用。

一、点、线和面1. 点点是二维图形中最基本的元素,它没有长度和宽度,只有位置。

点可以用小写字母标记,如A、B、C等。

2. 线段线段是由两个点确定的直线段,在数学中可以用AB或者直线上的两个点A和B表示。

线段具有长度,但没有宽度。

3. 封闭曲线封闭曲线是由线段首尾相连形成的图形,如圆、椭圆等。

它们具有长度和宽度,并且形状是封闭的。

4. 平行线平行线是在同一个平面上永远不会相交的直线。

它们具有相同的斜率,但是没有交点。

5. 直线直线是没有起点和终点的无限延伸的线段。

直线可以用一对平行线表示,如AB和CD。

6. 折线折线是由多条线段首尾相连形成的图形,每条线段称为折线的一条边。

折线可以是封闭的,也可以是不封闭的。

二、二维图形的分类1. 三角形三角形是由三条线段组成的图形,它们相交于三个顶点,每两条线段的交点称为三角形的顶点。

根据边长和角度的不同,三角形可以分为等边三角形、等腰三角形、直角三角形等。

2. 四边形四边形是由四条线段组成的图形,它们相交于四个顶点。

常见的四边形有矩形、正方形、平行四边形、梯形等。

3. 圆形圆形是一个封闭曲线,它的每个点到圆心的距离都是相等的。

圆形由一个中心和一个半径确定,常用字母O表示圆心,r表示半径。

4. 椭圆椭圆是一个封闭曲线,它的形状呈现类似椭圆形。

椭圆由两个焦点和一个常数和两个焦点的距离之和确定。

5. 多边形多边形是由多条线段组成的图形,它们相交于多个顶点,并且每两条线段的交点不是顶点。

常见的多边形有五边形、六边形、七边形等。

6. 弧线弧线是圆的一部分,它由圆心和起点、终点确定。

弧线可以是封闭的,也可以是不封闭的。

三、二维图形的性质1. 对称性许多二维图形都具有对称性,它们可以通过某条直线、某个点或者某个中心轴进行对称。

计算机图形学 第三章 二维图形的裁剪概述

计算机图形学 第三章 二维图形的裁剪概述

3.2.3 梁友栋-Barsky裁剪算法
式中,Δx=x2-x1,Δy=y2-y1,参数u在0~1 之间取值,P(x,y)代表了该线段上的一个 点,其值由参数u确定,由公式可知,当u=0 时,该点为P1(x1,y1),当u=1时,该点 为P2(x2,y2)。如果点P(x,y)位于由 坐标(xwmin,ywmin)和(xwmax,ywmax)所 确定的窗口内,那么下式成立: xwmin≤x1+ u· Δx≤xwmax ywmin≤y1+ u· Δy≤ywmax(3-10)
3.2.1 Cohen-Sutherland算法
► Code(int ►{
x,int y,int *c)
*c=0; if(y>ymax) /*(xmin,ymin)和(xmax,ymax) 为窗口左下角、右上角坐标。*/ *c=*c|0x08; else if(y<ymin) *c=*c|0x04; if(x>xmax) *c=*c|0x02; else if(x<xmin) *c=*c|0x01; }
► 根据直线两点式方程:

2)
(3-
3.2 线段的裁剪
► 整理后得通用交点公式: ►
(3-3)
► ►
1、与上边界的求交公式: (3-4)
3.2 线段的裁剪
► ►
2、与下边界的求交公式:
(3-5)

► ►
3、与右边界的求交公式:
(3-6) 4、与左边界的求交公式:

(3-7)
3.2.1 Cohen-Sutherla2、判别 根据C1和C2的具体值,可以有三种情况: (1)C1=C2=0,表明两端点全在窗口内,因而 整个线段也在窗内,应予保留。 (2)C1&C2≠0(两端点代码按位作逻辑乘不为 0),即C1和C2至少有某一位同时为1,表明两端点 必定处于某一边界的同一外侧,因而整个线段全在 窗外,应予舍弃。 (3)不属于上面两种情况,均需要求交点。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

while(k<=length) {
SetPixel(hdc,x,y,RGB(0,0,0)); x=x+deltx; y=y+delty; k=k+1; Sleep(50); } }
2018/5/11
坚持就是胜利
3 Bresenham直线生成算法
Bresenham直线生成算法是由Bresenham提出的一种精确而有效的 光栅线段生成算法,算法的目标是选择表示直线的最佳光栅位置。 为此,算法根据直线的斜率确定选择变量在X方向上或在Y方向上 每次递增一个单位,另一变量的增量为0或1,它取决于实际直线 与最近网格点位置的距离,这一距离称为误差。算法的构思巧妙, 使得每次只需检查误差项的符号即可确定所选象素。
2018/5/11
坚持就是胜利
3.2.1 圆的参数方程生成算法
圆是图形中经常使用的元素,圆被定义为所有离一中心位置 (xc,yc)距离为给定值R的点集,其函数方程为: (x﹣xc)2﹢(y﹣yc)2﹦R2 利用这个方程,我们可以沿X轴从xc﹣R 到xc﹢R以单位步长计算对 应的y值来得到圆周上每点的位置, 但这并非是生成圆的好方法。
2018/5/11
坚持就是胜利
直线的点斜式方程
y﹦m· x﹢b 其中,m表示直线的斜率,b是y轴截距。给定线段的两个端点 (x1,y1)和(x2,y2),可以计算斜率m和截距b: m﹦(y2﹣y1)/(x2﹣x1) b﹦y1﹣m· x1 对任何沿直线给定的x的增量△x,对应的y增量△y: △y﹦m· △x 同样,对应于y的增量△y,x的增量△x为: △x﹦(1/m)△y
2018/5/11
对于斜率值大于1的 线段,只要交换x和 y之间的规则,即沿 Y方向以单位步长增 加并计算最接近线 段路径的x连续值。 考虑到XY平面各种 八分和四分区域间 的对称性, Bresenham算法对任 意斜率的线段具有 通用性。
坚持就是胜利
Bresenham算法直线绘制例子: 考虑绘制从点(0,0)到(8,4)的线 段。 初值计算:x=0 y=0 Δx=8 Δy=4 ( 循环计算过程部分: e﹦-x for k﹦1 To x putpixel(x,y) e﹦e﹢2y If (e≥0) y﹦y﹢1 e﹦e﹣2x endif x﹦x﹢1
2018/5/11
坚持就是胜利
通常,所选象素点与实际的直线位置之间存在差值。当斜率m 在0-1之间时,x每增加一单位,y 应该增加m,记e为y方向上的误 差。当选取实际直线位置上方的象素点时,误差为e﹦m﹣1;当选 取实际直线位置下方的象素点时,误差为e﹦m。 为了简化判断,可首先令误差项的初值为e0﹦-1/2,这样只要 判断e的符号即可。第一步,当 e1﹦m﹢e0≥0,选取上面的象素 点(1,1);当e1﹦m﹢e0<0,选取下面的象素点(1,0)。e1作为 累计误差项供下一步判断继续使用。设第k步的误差为ek,选取上 面象素点后的积累误差为: ek+1﹦ek﹢(m﹣1) 选取下面的象素点后的积累误差为: ek+1﹦ek﹢m
2018/5/11
坚持就是胜利
DDA直线生成算法的伪语言描述
begin if abs(x2﹣x1)≥abs(y2﹣y1) then lenght﹦abs(x2﹣x1) else lenght﹦abs(y2﹣y1) endif △x﹦(x2﹣x1)/lenght △y﹦(y2﹣y1)/lenght x﹦x1 y﹦y1 k﹦1 while(k≤lenght) putpixel(x,y) x﹦x﹢△x y﹦y﹢△y k﹦k﹢1 endwhile end
2018/5/11
坚持就是胜利
修改后的Bresenham直线生成算法描述
由于x、y是整数,因此算法全部运算都只使用整 数,修改后的Bresenham直线生成算法描述如下: begin x﹦x1 y﹦y1 x﹦x2﹣x1 y﹦y2﹣y1 E﹦-x for k﹦1 To x putpixel(x,y) E﹦E﹢2y If (E≥0) y﹦y﹢1 E﹦E﹣2x endif x﹦x﹢1 next k endfor end
2018/5/11
坚持就是胜利
3.1 直线生成算法
最基本的图形显示方式是直线方式。实际上,无论什么复杂图形, 它们无非是由直线段和曲线段组成。而对于曲线及各种复杂的图 形,可以将其离散成许多小直线段,连接各直线来逼近欲生成的 曲线或其它复杂图形,所以一般图形都可以看成是由直线段组成。 因此,直线段生成的质量好坏与速度快慢将直接影响整个图形生 成的质量和速度。在光栅显示器上显示图形是将线段上所有象素 点亮的过程。如果已知直线段两个端点,可以有很多种不同的数 学方法来决定应改变在两端点之间的那些象素的亮度值才能显示 出两点间的直线。在绘图仪上绘直线段,主要决定X、Y方向上的 位移量,这些算法之间主要区别是判别和生成x、y增量的过程和 方法的不同。
2018/5/11
DDA方法计算象素位置要 比直接使用代数方程快。 它利用光栅特性消除了 代数方程中的乘法,而 在X和Y方向使用合适的 增量来逐步沿线段的路 径计算各象素位置。但 浮点增量的连续迭加中 取整误差的积累会使长 线段所计算的象素位置 偏离实际线段,而且算 法中的取整操作和浮点 运算仍然十分耗时。
2018/5/11
坚持就是胜利
以第一象限的直线为例。假 设斜率m在0-1之间。如右图 所示。若通过(0,0)的直线 的斜率m>l/2,它与x﹦1直 线的交点离y﹦l直线较y﹦0 直线近,光栅点(1,1)比 (1,0)更逼近于该直线,因 此应该取象素点(1,1)。如 果斜率m<l/2,则应取象素 点(1,0)。当斜率m﹦l/2 时,差值相同,可以任选 (1,1)或(1,0)象素点。
2018/5/11
坚持就是胜利
DDA直线生成算法
DDA直线生成算法是一种基于上述直线方程的线段扫描转换算法。 在一个坐标轴上以单位间隔增量,决定另一个坐标轴上最靠近线 段路径的对应整数值。为了使产生的直线光滑,应使X、Y两方向 上每一步的增量都不大于一个单位,因此当|m|≤1时,应该使用x 做自变量,而当|m|>1时应该使用y做自变量。也就是说应该选定 x2﹣x1和y2﹣y1中绝对值较大者作为步进的控制量。假定x2﹣x1 的绝对值大于y2﹣y1的绝对值,取x为一个象素单位长,即x 每次 递增一个象素,然后利用下式计算相应的y值: yk+1﹦yk﹢△y﹦yk﹢m· △x 对于|m|>1的线段,可通过计算由Y方向的增量△y引起的改变来 生成直线: xk+1﹦xk﹢△x﹦xk﹢m· △y
2018/5/11
坚持就是胜利
圆的方程绘制方法C++实现
void 圆的方程绘制(HDC hdc) { double xc=300,yc=200,R=150; double x,y; y=yc; for(x=xc-R;x<=450;x++) { y=sqrt(R*R-(x-xc)*(x-xc))+yc; SetPixel(hdc,x,y,RGB(0,0,0)); y=-sqrt(R*R-(x-xc)*(x-xc))+yc; SetPixel(hdc,x,y,RGB(0,0,0)); Sleep(50); } }
2018/5/11
坚持就是胜利
1. 点的生成
点是图形中最基本的图素,直线、曲线以及其它的图元都是点的 集合。在几何学中,一个点既没有大小,也没有维数,点只是表 示坐标系统中一个位置。在计算机图形学中,点是用数值坐标来 表示的。在直角坐标系中点由(x,y) 两个数值组成的坐标表示, 在三维坐标系中点是由(x,y,z)三个数值组成的坐标表示。 在输出设备上输出一个点,就要把应用程序中的坐标信息转换 成所用输出设备的相应位置。对于一个CRT监视器来说,输出一个 点就是要在指定的屏幕位置上打开电子束,使该位置上的荧光点 亮。 在PC机中,点亮屏幕上一个点是由BIOS控制完成的,各种程 序语言中都有描点语句。例如C语言为putpixel(x,y,color)。
坚持就是胜利
DDA直线绘制的C++实现
void DDA直线绘制(HDC hdc) { int k; double x1=50,y1=50,x2=300,y2=350; double x,y,deltx,delty,length; if (fabs(x2-x1)>=fabs(y2-y1)) length=fabs(x2-x1); else length=fabs(y2-y1); deltx=(x2-x1)/length; delty=(y2-y1)/length; x=x1; y=y1; k=1;
2018/5/11
坚持就是胜利
3.2 二次曲线绘制算法
二次曲线是指那些能用二次函数 Ax2﹢Bxy﹢Cy2﹢Dx﹢Ey﹢F﹦0 来表示的曲线,包括圆、椭圆、抛物线、双曲线等。由于图形输出 设备的基本动作是显示象素点或者是画以步长为单位的直线段, 所以,从图形显示器和绘图机上输出的图形,一般除了水平线和 垂直线以外,其他的各种线段,包括直线和曲线,都是由很多的 点和短直线构成的锯齿形线条组成的。也就是说,需要把曲线离 散化,把它们分割成很多短直线段,用这些短直线段组成的折线 来逼近曲线。
2018/5/11
此Bresenham算法在计 算直线斜率和误差项时 要用到浮点算术运算和 除法,如果采用整数算 术运算和避免除法,可 以加快算法的速度。实 际上,误差项e的数值 大小与算法的执行没有 什么关系,相关的只是 e的符号,因此作简单 变换,即可得到整数算 法。
坚持就是胜利
将e乘以2x记为E﹦2xe,则E同e有相同的符号,取代e 判断E的符号确定象素点的过程仍然正确。此时上述算法中各 误差项的表示式做如下变动: 初始误差项: E0﹦2xe0 ﹦ - x ; 积累误差 ek+1﹦ek﹢m修改为: Ek+1﹦2xek+1 ﹦2x(ek﹢y/x) ﹦2xek﹢2y ﹦Ek﹢2y; 如果选取上面的象素点,积累误差还要减去1,修改为: Ek+1﹦2x(ek+1﹣1) ﹦E k+1﹣2x
相关文档
最新文档