dda法生成直线的基本原理是什么为什么说Bersenham画圆的算法效率较高

dda法生成直线的基本原理是什么为什么说Bersenham画圆的算法效率较高,第1张

DDA算法主要是根据直线公式y = kx + b来推导出来的,其关键之处在于如何设定单位步进,即一个方向的步进为单位步进,另一个方向的步进必然是小于1。算法的具体思路如下:

1 输入直线的起点、终点;

2 计算x方向的间距:△X和y方向的间距:△Y。

3 确定单位步进,取MaxSteps = max(△X,△Y); 若△X>=△Y,则X方向的步进为单位步进,X方向步进一个单位,Y方向步进△Y/MaxSteps;否则相反。

4 设置第一个点的像素值

5 令循环初始值为1,循环次数为MaxSteps,定义变量x,y,执行以下计算:

a x增加一个单位步进,y增加一个单位步进

b 设置位置为(x,y)的像素值

Bresenham算法是DDA算法画线算法的一种改进算法。本质上它也是采取了步进的思想。不过它比DDA算法作了优化,避免了步进时浮点数运算,同时为选取符合直线方程的点提供了一个好思路。首先通过直线的斜率确定了在x方向进行单位步进还是y方向进行单位步进:当斜率k的绝对值|k|<1时,在x方向进行单位步进;当斜率k的绝对值|k|>1时,在y方向进行单位步进。

1 输入线段的起点和终点。

2 判断线段的斜率是否存在(即起点和终点的x坐标是否相同),若相同,即斜率不存在,

只需计算y方向的单位步进(△Y+1次),x方向的坐标保持不变即可绘制直线。

3 计算线段的斜率k,分为下面几种情况处理

a k等于0,即线段平行于x轴,即程序只需计算x方向的单位步进,y方向的值不变

b |k|等于1,即线段的x方向的单位步进和y方向的单位步进一样,皆为1。直接循环△X次计算x和y坐标。

4 根据输入的起点和终点的x、y坐标值的大小决定x方向和y方向的单位步进是1还是-1

6 画出第一个点。

7 若|k| <1,设m =0,计算P0,如果Pm>0,下一个要绘制的点为(Xm+单位步进,Ym),

Pm+1 = Pm -2△Y;

否则要绘制的点为(Xm+单位步进,Ym+单位步进)

Pm+1 = Pm+2△X-2△Y;

8 重复执行第七步△X-1次;

9 若|k| <1,设m =0,计算Q0,如果Qm>0,下一个要绘制的点为(Xm,Ym+单位步进),

Pm+1 = Pm -2△X;

否则要绘制的点为(Xm+单位步进,Ym+单位步进)

Pm+1 = Pm+2△Y-2△X;

10 重复执行第9步△Y-1次;

在你的CXXXview类上右键 添加成员函数类型void 函数名DDALine(参数是两个点的xy坐标 还有颜色值RGB 一共五个参数)

再次鼠标右键CXXXView添加成员变量 参数两个点的坐标 四个参数 都是float 公有成员public

如果直接在窗体里根据已知参数话直线的话 把你的代码放在OnDraw()函数里

如果用鼠标 *** 作的话 那你要添加windows消息 按快捷键ctrl+w 类向导找到你的CXXXView在消息里添加WM_OnLButtonDown(鼠标按下) WM_OnMouseMove(鼠标移动) WM_OnButtonUp(鼠标抬起) 并设置一个BOOL变量控制画线

在OnLButtonDown里传递参数pointx pointy等于初始点xy坐标 bool量=true

OnMouseMove里的point是第二坐标的xy

OnButtonUp bool量等于false

在CAD软件 *** 作中,为方便使用者,利用快捷键代替鼠标。

可以利用键盘快捷键发出命令,完成绘图,修改,保存等 *** 作。

这些命令键就是CAD快捷键。那么cad命令有哪些下面为大家介绍常用CAD命令、快捷键和命令说明大全,赶紧看看吧!acadpgp文件的第二部分定义了命令别名。

使用记事本或任何以ASCII格式保存文件的文本编辑器,用户可以编辑acadpgp以更改现有别名或添加新的别名。要打开PGP文件,请在“工具”菜单上,单击“自定义”“编辑自定义文件”“程序员数”(acadpgp)。

此文件还可以用分号(;)引入说明文字快捷键就是指命令的别名。另外express实用工具的aliasedit命令可修改pgp文件所谓的快捷命令,是AutoCAD为了提高绘图速度定义的快捷方式,它用一个或几个简单的字母来代替常用的命令,使我们不用去记忆众多的长长的命令,也不必为了执行一个命令,在菜单和工具栏上寻寻匿匿。

所有定义的快捷命令都保存在ACADPGP文件中(ACADPHP存放在系统盘下的autodesk文件夹SUPPORT子目录下,快捷 *** 作,直接选取菜单:工具-自定义-编辑自定义文件-程序参数pgp,修改后保存,命令行输入reinit重新加载即可![1]),我们可以通过修改该文件的内容来定义自己常用的快捷命令。

以上就是关于dda法生成直线的基本原理是什么为什么说Bersenham画圆的算法效率较高全部的内容,包括:dda法生成直线的基本原理是什么为什么说Bersenham画圆的算法效率较高、VC++怎么实现用户给出两点,用DDA算法连成线段、cad快捷键命令大全等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9354509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存