当前位置:首页 » 操作系统 » dda算法

dda算法

发布时间: 2022-01-10 07:21:33

⑴ 怎么使用DDA算法完成程序

建立[CD,PCD]的绘制空间

File→new→Project→MFC AppWizard[exe] →Singer→Finish

然后在classview找到Cmyview→OnDarw[CDC*pDC]双击就ok

再找到void CMy001View::OnDraw(CDC* pDC) //001是我自己取的文件名

{

CMy001Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

}

在此空间加上下面的语句即可:

static double p[4][2]={50,400,140,20,400,40,635,420};

const NO=4;//特征点个数

int i;

pDC->MoveTo(p[0][0],p[0][1]);

for (i=1;i

pDC->LineTo (p[i][0],p[i][1]);

double t,t1,t2,xt,yt;

int rate=200,x,y;

pDC->MoveTo(p[0][0],p[0][1]);

for (t=0;t<=1;t+=1.0/rate)

{yt=1-t;

t1=yt*yt;

t2=3*yt*t;

xt=p[0][0]*yt*t1+p[1][0]*t2*yt+p[2][0]*t2*t+p[3][0]*t*t*t;

yt=p[0][1]*yt*t1+p[1][1]*t2*yt+p[2][1]*t2*t+p[3][1]*t*t*t;

x=(int)(xt);

y=(int)(yt);

pDC->LineTo(x,y);

}

关于bezier曲线的实现,书上的display.h在C里无法实现,只好转到了绘制点线上面即用pDC来实现.

相应的生成直线的DDA算法也可以这样实现

具体插入的程序为:

int x,x1=600,x0=100,y1=600,y0=300;// x01 m是直线斜率

float dx,dy,y,m;

dx=x1-x0;

dy=y1-y0;

m=dy/dx;

y=y0;

for (x=x0;x<=x1;x++)

{ pDC->SetPixel(x,(int)(y+0.5),0);

y+=m;

}

Game over
困惑死了………

⑵ 为什么用dda算法生成圆周或椭圆不需要用到三角运算,所以运算效率高

一个自耕农家庭里,牛顿诞生了。牛顿是一个早产儿,出生时只有三磅重,接生婆和他的亲人都担心他能否活下来。谁也没有料到这个看起来微不足道的小东西会成为了一位震古烁今的科学巨人,并且竟活到了85岁的高龄。

牛顿出生前三个月父亲便去世了。在他两岁时,母亲改嫁给一个牧师,把牛顿留在外祖母身边抚养。11岁时,母亲的后夫去世,母亲带着和后夫所生的一子二女回到牛顿身边。牛顿自幼沉默寡言,性格倔强,这种习性可能来自它的家庭处境。

大约从五岁开始,牛顿被送到公立学校读书。少年时的牛顿并不是神童,他资质平常,成绩一般,但他喜欢读书,喜欢看一些介绍各种简单机械模型制作方法的读物,并从中受到启发,自己动手制作些奇奇怪怪的小玩意,如风车、木钟、折叠式提灯等等。

传说小牛顿把风车的机械原理摸透后,自己制造了一架磨坊的模型,他将老鼠绑在一架有轮子的踏车上,然后在轮子的前面放上一粒玉米,刚好那地方是老鼠可望不可及的位置。老鼠想吃玉米,就不断的跑动,于是轮子不停的转动;又一次他放风筝时,在绳子上悬挂着小灯,夜间村人看去惊疑是彗星出现;他还制造了一个小水钟。每天早晨,小水钟会自动滴水到他的脸上,催他起床。他还喜欢绘画、雕刻,尤其喜欢刻日晷,家里墙角、窗台上到处安放着他刻画的日晷,用以验看日影的移动。

牛顿12岁时进了离家不远的格兰瑟姆中学。牛顿的母亲原希望他成为一个农民,但牛顿本人却无意于此,而酷爱读书。随着年岁的增大,牛顿越发爱好读书,喜欢沉思,做科学小实验。他在格兰瑟姆中学读书时,曾经寄宿在一位剂师家里,使他受到了化学试验的熏陶。

牛顿在中学时代学习成绩并不出众,只是爱好读书,对自然现象由好奇心,例如颜色、日影四季的移动,尤其是几何学、哥白尼的日心说等等。他还分门别类的记读书笔记,又喜欢别出心裁的作些小工具、小技巧、小发明、小试验。

当时英国社会渗透基督教新思想,牛顿家里有两位都以神父为职业的亲戚,这可能影响牛顿晚年的宗教生活。从这些平凡的环境和活动中,还看不出幼年的牛顿是个才能出众异于常人的儿童。

后来迫于生活,母亲让牛顿停学在家务农,赡养家庭。但牛顿一有机会便埋首书卷,以至经常忘了干活。每次,母亲叫他同佣人一道上市场,熟悉做交易的生意经时,他便恳求佣人一个人上街,自己则躲在树丛后看书。有一次,牛顿的舅父起了疑心,就跟踪牛顿上市镇去,发现他的外甥伸着腿,躺在草地上,正在聚精会神地钻研一个数学问题。牛顿的好学精神感动了舅父,于是舅父劝服了母亲让牛顿复学,并鼓励牛顿上大学读书。牛顿又重新回到了学校,如饥似渴地汲取着书本上的营养。有一次,他去郊外游玩,之后靠在一棵苹果树下休息,忽然,一个苹果从树上掉下来。他觉得很奇怪,为什么苹果会从上往下掉而不是从下往上掉?他带着这个疑问回到了家里研究,后来他发现原来地球是有引力的能把物体吸住。随后,就出现了《牛顿物理引力学》。

求学岁月

1661年,19岁的牛顿以减费生的身份进入剑桥大学三一学院,靠为学院做杂务的收入支付学费,1664年成为奖学金获得者,1665年获学士学位。

17世纪中叶,剑桥大学的教育制度还渗透着浓厚的中世纪经院哲学的气味,当牛顿进入剑桥时,哪里还在传授一些经院式课程,如逻辑、古文、语法、古代史、神学等等。两年后三一学院出现了新气象,卢卡斯创设了一个独辟蹊径的讲座,规定讲授自然科学知识,如地理、物理、天文和数学课程。

讲座的第一任教授伊萨克·巴罗是个博学的科学家。这位学者独具慧眼,看出了牛顿具有深邃的观察力、敏锐的理解力。于是将自己的数学知识,包括计算曲线图形面积的方法,全部传授给牛顿,并把牛顿引向了近代自然科学的研究领域。

在这段学习过程中,牛顿掌握了算术、三角,读了开普勒的《光学》,笛卡尔的《几何学》和《哲学原理》,伽利略的《两大世界体系的对话》,胡克的《显微图集》,还有皇家学会的历史和早期的哲学学报等。

牛顿在巴罗门下的这段时间,是他学习的关键时期。巴罗比牛顿大12岁,精于数学和光学,他对牛顿的才华极为赞赏,认为牛顿的数学才超过自己。后来,牛顿在回忆时说道:“巴罗博士当时讲授关于运动学的课程,也许正是这些课程促使我去研究这方面的问题。”

当时,牛顿在数学上很大程度是依靠自学。他学习了欧几里得的《几何原本》、笛卡儿的《几何学》、沃利斯的《无穷算术》、巴罗的《数学讲义》及韦达等许多数学家的着作。其中,对牛顿具有决定性影响的要数笛卡儿的《几何学》和沃利斯的《无穷算术》,它们将牛顿迅速引导到当时数学最前沿~解析几何与微积分。1664年,牛顿被选为巴罗的助手,第二年,剑桥大学评议会通过了授予牛顿大学学士学位的决定。

1665~1666年严重的鼠疫席卷了伦敦,剑桥离伦敦不远,为恐波及,学校因此而停课,牛顿于1665年6月离校返乡。

由于牛顿在剑桥受到数学和自然科学的熏陶和培养,对探索自然现象产生浓厚的兴趣,家乡安静的环境又使得他的思想展翅飞翔。1665~1666年这段短暂的时光成为牛顿科学生涯中的黄金岁月,他在自然科学领域内思潮奔腾,才华迸发,思考前人从未思考过的问题,踏进了前人没有涉及的领域,创建了前所未有的惊人业绩。

1665年初,牛顿创立级数近似法,以及把任意幂的二项式化为一个级数的规则;同年11月,创立正流数法(微分);次年1月,用三棱镜研究颜色理论;5月,开始研究反流数法(积分)。这一年内,牛顿开始想到研究重力问题,并想把重力理论推广到月球的运动轨道上去。他还从开普勒定律中推导出使行星保持在它们的轨道上的力必定与它们到旋转中心的距离平方成反比。牛顿见苹果落地而悟出地球引力的传说,说的也是此时发生的轶事。

总之,在家乡居住的两年中,牛顿以比此后任何时候更为旺盛的精力从事科学创造,并关心自然哲学问题。他的三大成就:微积分、万有引力、光学分析的思想都是在这时孕育成形的。可以说此时的牛顿已经开始着手描绘他一生大多数科学创造的蓝图。

1667年复活节后不久,牛顿返回到剑桥大学,10月1日被选为三一学院的仲院侣(初级院委),翌年3月16日获得硕士学位,同时成为正院侣(高级院委)。1669年10月27日,巴罗为了提携牛顿而辞去了教授之职,26岁的牛顿晋升为数学教授,并担任卢卡斯讲座的教授。巴罗为牛顿的科学生涯打通了道路,如果没有牛顿的舅父和巴罗的帮助,牛顿这匹千里马可能就不会驰骋在科学的大道上。巴罗让贤,这在科学史上一直被传为佳话。

伟大的成就~建立微积分

在牛顿的全部科学贡献中,数学成就占有突出的地位。他数学生涯中的第一项创造性成果就是发现了二项式定理。据牛顿本人回忆,他是在1664年和1665年间的冬天,在研读沃利斯博士的《无穷算术》时,试图修改他的求圆面积的级数时发现这一定理的。

笛卡尔的解析几何把描述运动的函数关系和几何曲线相对应。牛顿在老师巴罗的指导下,在钻研笛卡尔的解析几何的基础上,找到了新的出路。可以把任意时刻的速度看是在微小的时间范围里的速度的平均值,这就是一个微小的路程和时间间隔的比值,当这个微小的时间间隔缩小到无穷小的时候,就是这一点的准确值。这就是微分的概念。

求微分相当于求时间和路程关系得在某点的切线斜率。一个变速的运动物体在一定时间范围里走过的路程,可以看作是在微小时间间隔里所走路程的和,这就是积分的概念。求积分相当于求时间和速度关系的曲线下面的面积。牛顿从这些基本概念出发,建立了微积分。

微积分的创立是牛顿最卓越的数学成就。牛顿为解决运动问题,才创立这种和物理概念直接联系的数学理论的,牛顿称之为"流数术"。它所处理的一些具体问题,如切线问题、求积问题、瞬时速度问题以及函数的极大和极小值问题等,在牛顿前已经得到人们的研究了。但牛顿超越了前人,他站在了更高的角度,对以往分散的努力加以综合,将自古希腊以来求解无限小问题的各种技巧统一为两类普通的算法——微分和积分,并确立了这两类运算的互逆关系,从而完成了微积分发明中最关键的一步,为近代科学发展提供了最有效的工具,开辟了数学上的一个新纪元。

牛顿没有及时发表微积分的研究成果,他研究微积分可能比莱布尼茨早一些,但是莱布尼茨所采取的表达形式更加合理,而且关于微积分的着作出版时间也比牛顿早。

在牛顿和莱布尼茨之间,为争论谁是这门学科的创立者的时候,竟然引起了一场悍然大波,这种争吵在各自的学生、支持者和数学家中持续了相当长的一段时间,造成了欧洲大陆的数学家和英国数学家的长期对立。英国数学在一个时期里闭关锁国,囿于民族偏见,过于拘泥在牛顿的“流数术”中停步不前,因而数学发展整整落后了一百年。

应该说,一门科学的创立决不是某一个人的业绩,它必定是经过多少人的努力后,在积累了大量成果的基础上,最后由某个人或几个人总结完成的。微积分也是这样,是牛顿和莱布尼茨在前人的基础上各自独立的建立起来的。

1707年,牛顿的代数讲义经整理后出版,定名为《普遍算术》。他主要讨论了代数基础及其(通过解方程)在解决各类问题中的应用。书中陈述了代数基本概念与基本运算,用大量实例说明了如何将各类问题化为代数方程,同时对方程的根及其性质进行了深入探讨,引出了方程论方面的丰硕成果,如,他得出了方程的根与其判别式之间的关系,指出可以利用方程系数确定方程根之幂的和数,即“牛顿幂和公式”。

牛顿对解析几何与综合几何都有贡献。他在1736年出版的《解析几何》中引入了曲率中心,给出密切线圆(或称曲线圆)概念,提出曲率公式及计算曲线的曲率方法。并将自己的许多研究成果总结成专论《三次曲线枚举》,于1704年发表。此外,他的数学工作还涉及数值分析、概率论和初等数论等众多领域。

伟大的成就~对光学的三大贡献

在牛顿以前,墨子、培根、达·芬奇等人都研究过光学现象。反射定律是人们很早就认识的光学定律之一。近代科学兴起的时候,伽利略靠望远镜发现了“新宇宙”,震惊了世界。荷兰数学家斯涅尔首先发现了光的折射定律。笛卡尔提出了光的微粒说……

牛顿以及跟他差不多同时代的胡克、惠更斯等人,也象伽利略、笛卡尔等前辈一样,用极大的兴趣和热情对光学进行研究。1666年,牛顿在家休假期间,得到了三棱镜,他用来进行了着名的色散试验。一束太阳光通过三棱镜后,分解成几种颜色的光谱带,牛顿再用一块带狭缝的挡板把其他颜色的光挡住,只让一种颜色的光在通过第二个三棱镜,结果出来的只是同样颜色的光。这样,他就发现了白光是由各种不同颜色的光组成的,这是第一大贡献。

牛顿为了验证这个发现,设法把几种不同的单色光合成白光,并且计算出不同颜色光的折射率,精确地说明了色散现象。揭开了物质的颜色之谜,原来物质的色彩是不同颜色的光在物体上有不同的反射率和折射率造成的。公元1672年,牛顿把自己的研究成果发表在《皇家学会哲学杂志》上,这是他第一次公开发表的论文。

许多人研究光学是为了改进折射望远镜。牛顿由于发现了白光的组成,认为折射望远镜透镜的色散现象是无法消除的(后来有人用具有不同折射率的玻璃组成的透镜消除了色散现象),就设计和制造了反射望远镜。

牛顿不但擅长数学计算,而且能够自己动手制造各种试验设备并且作精细实验。为了制造望远镜,他自己设计了研磨抛光机,实验各种研磨材料。公元1668年,他制成了第一架反射望远镜样机,这是第二大贡献。公元1671年,牛顿把经过改进得反射望远镜献给了皇家学会,牛顿名声大震,并被选为皇家学会会员。反射望远镜的发明奠定了现代大型光学天文望远镜的基础。

同时,牛顿还进行了大量的观察实验和数学计算,比如研究惠更斯发现的冰川石的异常折射现象,胡克发现的肥皂泡的色彩现象,“牛顿环”的光学现象等等。

牛顿还提出了光的“微粒说”,认为光是由微粒形成的,并且走的是最快速的直线运动路径。他的“微粒说”与后来惠更斯的“波动说”构成了关于光的两大基本理论。此外,他还制作了牛顿色盘等多种光学仪器。

伟大的成就~构筑力学大厦

牛顿是经典力学理论的集大成者。他系统的总结了伽利略、开普勒和惠更斯等人的工作,得到了着名的万有引力定律和牛顿运动三定律。

在牛顿以前,天文学是最显赫的学科。但是为什么行星一定按照一定规律围绕太阳运行?天文学家无法圆满解释这个问题。万有引力的发现说明,天上星体运动和地面上物体运动都受到同样的规律——力学规律的支配。

早在牛顿发现万有引力定律以前,已经有许多科学家严肃认真的考虑过这个问题。比如开普勒就认识到,要维持行星沿椭圆轨道运动必定有一种力在起作用,他认为这种力类似磁力,就像磁石吸铁一样。1659年,惠更斯从研究摆的运动中发现,保持物体沿圆周轨道运动需要一种向心力。胡克等人认为是引力,并且试图推到引力和距离的关系。

1664年,胡克发现彗星靠近太阳时轨道弯曲是因为太阳引力作用的结果;1673年,惠更斯推导出向心力定律;1679年,胡克和哈雷从向心力定律和开普勒第三定律,推导出维持行星运动的万有引力和距离的平方成反比。

牛顿自己回忆,1666年前后,他在老家居住的时候已经考虑过万有引力的问题。最有名的一个说法是:在假期里,牛顿常常在花园里小坐片刻。有一次,象以往屡次发生的那样,一个苹果从树上掉了下来……

一个苹果的偶然落地,却是人类思想史的一个转折点,它使那个坐在花园里的人的头脑开了窍,引起他的沉思:究竟是什么原因使一切物体都受到差不多总是朝向地心的吸引呢?牛顿思索着。终于,他发现了对人类具有划时代意义的万有引力。

牛顿高明的地方就在于他解决了胡克等人没有能够解决的数学论证问题。1679年,胡克曾经写信问牛顿,能不能根据向心力定律和引力同距离的平方成反比的定律,来证明行星沿椭圆轨道运动。牛顿没有回答这个问题。1685年,哈雷登门拜访牛顿时,牛顿已经发现了万有引力定律:两个物体之间有引力,引力和距离的平方成反比,和两个物体质量的乘积成正比。

当时已经有了地球半径、日地距离等精确的数据可以供计算使用。牛顿向哈雷证明地球的引力是使月亮围绕地球运动的向心力,也证明了在太阳引力作用下,行星运动符合开普勒运动三定律。

在哈雷的敦促下,1686年底,牛顿写成划时代的伟大着作《自然哲学的数学原理》一书。皇家学会经费不足,出不了这本书,后来靠了哈雷的资助,这部科学史上最伟大的着作之一才能够在1687年出版。

牛顿在这部书中,从力学的基本概念(质量、动量、惯性、力)和基本定律(运动三定律)出发,运用他所发明的微积分这一锐利的数学工具,不但从数学上论证了万有引力定律,而且把经典力学确立为完整而严密的体系,把天体力学和地面上的物体力学统一起来,实现了物理学史上第一次大的综合。

站在巨人的肩上

牛顿的研究领域非常广泛,他除了在数学、光学、力学等方面做出卓越贡献外,他还花费大量精力进行化学实验。他常常六个星期一直留在实验室里,不分昼夜的工作。他在化学上花费的时间并不少,却几乎没有取得什么显着的成就。为什么同样一个伟大的牛顿,在不同的领域取得的成就竟那么不一样呢?

其中一个原因就是各个学科处在不同的发展阶段。在力学和天文学方面,有伽利略、开普勒、胡克、惠更斯等人的努力,牛顿有可能用已经准备好的材料,建立起一座宏伟壮丽的力学大厦。正象他自己所说的那样“如果说我看得远,那是因为我站在巨人的肩上”。而在化学方面,因为正确的道路还没有开辟出来,牛顿没法走到可以砍伐材料的地方。

牛顿在临终前对自己的生活道路是这样总结的:“我不知道在别人看来,我是什么样的人;但在我自己看来,我不过就象是一个在海滨玩耍的小孩,为不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳而沾沾自喜,而对于展现在我面前的浩瀚的真理的海洋,却全然没有发现。”

这当然是牛顿的谦逊。

怪异的牛顿

牛顿并不善于教学,他在讲授新近发现的微积分时,学生都接受不了。但在解决疑难问题方面的能力,他却远远超过了常人。还是学生时,牛顿就发现了一种计算无限量的方法。他用这个秘密的方法,算出了双曲面积到二百五十位数。他曾经高价买下了一个棱镜,并把它作为科学研究的工具,用它试验了白光分解为的有颜色的光。

开始,他并不愿意发表他的观察所得,他的发现都只是一种个人的消遣,为的是使自己在寂静的书斋中解闷,他独自遨游于自己所创造的超级世界里。后来,在好友哈雷的竭力劝说下,才勉强同意出版他的手稿,才有划时代巨着《自然哲学的数学原理》的问世。

作为大学教授,牛顿常常忙得不修边幅,往往领带不结,袜带不系好,马裤也不纽扣,就走进了大学餐厅。有一次,他在向一位姑娘求婚时思想又开了小差,他脑海了只剩下了无穷量的二项式定理。他抓住姑娘的手指,错误的把它当成通烟斗的通条,硬往烟斗里塞,痛得姑娘大叫,离他而去。牛顿也因此终生未娶。

牛顿从容不迫地观察日常生活中的小事,结果作出了科学史上一个个重要的发现。他马虎拖沓,曾经闹过许多的笑话。一次,他边读书,边煮鸡蛋,等他揭开锅想吃鸡蛋时,却发现锅里是一只怀表。还有一次,他请朋友吃饭,当饭菜准备好时,牛顿突然想到一个问题,便独自进了内室,朋友等了他好久还是不见他出来,于是朋友就自己动手把那份鸡全吃了,鸡骨头留在盘子,不告而别了。等牛顿想起,出来后,发现了盘子里的骨头,以为自己已经吃过了,便转身又进了内室,继续研究他的问题。

牛顿晚年

但是由于受时代的限制,牛顿基本上是一个形而上学的机械唯物主义者。他认为运动只是机械力学的运动,是空间位置的变化;宇宙和太阳一样是没有发展变化的;靠了万有引力的作用,恒星永远在一个固定不变的位置上……

随着科学声誉的提高,牛顿的政治地位也得到了提升。1689年,他被当选为国会中的大学代表。作为国会议员,牛顿逐渐开始疏远给他带来巨大成就的科学。他不时表示出对以他为代表的领域的厌恶。同时,他的大量的时间花费在了和同时代的着名科学家如胡克、莱布尼兹等进行科学优先权的争论上。

晚年的牛顿在伦敦过着堂皇的生活,1705年他被安妮女王封为贵族。此时的牛顿非常富有,被普遍认为是生存着的最伟大的科学家。他担任英国皇家学会会长,在他任职的二十四年时间里,他以铁拳统治着学会。没有他的同意,任何人都不能被选举。

晚年的牛顿开始致力于对神学的研究,他否定哲学的指导作用,虔诚地相信上帝,埋头于写以神学为题材的着作。当他遇到难以解释的天体运动时,竟提出了“神的第一推动力”的谬论。他说“上帝统治万物,我们是他的仆人而敬畏他、崇拜他”。

1727年3月20日,伟大艾萨克·牛顿逝世。

⑶ 计算机图形学:Matlab编程画直线(DDA算法)

function DDA(x1,y1,x2,y2,color)

length =abs(x2-x1);
if abs(y2-y1)>length
length=abs(y2-y1);
end
dx=(x2-x1)/length;
dy=(y2-y1)/length;
x=x1+0.5*sign(dx);
y=y1+0.5*sign(dy);
hold on
for i=1:length
plot(round(x),round(y),'Color',color)
x=x+dx;
y=y+dy;
end
hold off
end

⑷ 求计算机图形学中的直线绘制函数法、DDA算法、中点法和Bresenham算法的优缺点以及比较.

DDA称为数值微分画线算法,是直线生成算法中最简单的一种.原理相当简单,就是最直观的根据斜率的偏移程度,决定是以x为步进方向还是以y为步进方向.然后在相应的步进方向上,步进变量每次增加一个像素,而另一个相关坐标变量则为Yk_1=Yk+m(以x为步进变量为例,m为斜率)假定直线斜率k在0~1之间,当前象素点为(xp,yp),则下一个象素点有两种可选择点P1(xp+1,yp)或P2(xp+1,yp+1).若P1与P2的中点(xp+1,yp+0.5)称为M,Q为理想直线与x=xp+1垂线的交点.当M在Q的下方时,则取P2应为下一个象素点;当M在Q的上方时,则取P1为下一个象素点.这就是中点画线法的基本原理Bresenham:过各行、各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线各垂直网格线的交点,然后确定该列像素中与此交点最近的像素.该算法的优点在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列所求的像素.大概就是这样,预知详细,

⑸ dda画直线算法matlab

function DDA(x1,y1,x2,y2,color)length =abs(x2-x1);
if abs(y2-y1)>length
length=abs(y2-y1);
end
dx=(x2-x1)/length;
dy=(y2-y1)/length;
x=x1+0.5*sign(dx);
y=y1+0.5*sign(dy);
hold on
for i=1:length
plot(round(x),round(y),'Color',color)
x=x+dx;
y=y+dy;
end
hold offend

⑹ 用C++实现DDA算法

加上
include<window.h>试试
可能是没有引入相关的类库

⑺ 与DDA算法相比,中点画线法有什么优点

void DDALine(int x0,int y0,int x1,int y1,int color) {
int x;
float dx, dy, y, k;
dx = x1-x0; dy=y1-y0;
k=dy/dx,;y=y0;
for (x=x0;x< x1;x++) {
drawpixel (x, int(y+0.5), color);
y=y+k;
}
}
…… top↑

如上面代码所示,DDA算法中的y和k都必须用浮点数表示,并且每一步运算都要对y进行舍入取整,这不利于硬件实现。中点画线法只包含整数变量,并且不含乘除法,因而解决了上述问题

⑻ DDA方法的应用

DDA自问世以来已经获得极为广泛的应用。裴觉民等[23]将DDA方法应用在裂隙岩体边坡工程中,对原始边坡和开挖后的边坡进行了计算,并考虑了爆破作用对边坡稳定性的影响。T.C.Ke[24]应用DDA方法和极限平衡法研究了某边坡的稳定性,指出了DDA方法的优越性;Xuecheng Dong[25]将 DDA 方法应用在三峡船闸边坡的稳定性研究中;S.L.Zhao等[26]、G.Q.Chen 等[27]将 DDA 方法应用在岩石边坡的稳定性分析中;Y.H.Hat zor[28]应用关键块体理论和DDA方法研究了Masada山脉某边坡的稳定性及破坏模式;周少怀等[29]基于DDA算法,补充和发展了DDA方法计算机程序,分析了边坡大位移问题和地下开挖引起地面变形的工程实例,并与离散元计算结果进行了比较研究。Kim YongⅡ等(1996)[19]将DDA方法应用在地下工程的开挖及岩体支护设计中,认为所建立的算法可以模拟地下工程的开挖过程。首先要计算出开挖前岩体内的应力状态,其次根据第一次开挖步来确定新产生的应力分布,新产生的应力作为下一次开挖的初始应力,开挖过程结束以前一直进行这样的迭代计算。经过算例研究,认为岩体开挖的最终稳定性与开挖次序及相应的应力历史有关。另外,他们还进行了喷射混凝土和混凝土衬砌方面的研究,将喷射混凝土和混凝土衬砌处理成具有一定厚度和材料性质的单元进行分析研究。邬爱清等[30]根据已初步开发出的DDA模型计算程序,分别就某工程试验洞开挖和边坡明挖问题进行了计算,并与有限元结果进行了比较,结果表明,DDA模型计算结果在岩体开挖位移形态及位移量级上与有限元及实际位移监测结果都具有较好的可比性。

Kuokai Shyu 等[13]应用DDA方法研究了在地震作用下Bartlett 坝肩的稳定性;Shilong Zhao等[31]应用DDA方法研究了岩体的倾倒破坏问题;Lanbo Liu[32]应用DDA方法研究了大地构造学中的板块运动;Takeshi Sasaki等[33]应用有限元方法和DDA方法研究了裂隙岩体地基的稳定性,结果与解析分析极为吻合;C.J.Pearce等(1998)[34]将DDA方法应用在混凝土破裂行为模拟中;Y.I.Kim等[35]将DDA方法应用在混凝土坝基的稳定性分析中;S.M.Hsiung[36]等将DDA方法应用在地震荷载对地下工程的稳定性影响中;A.Mortazavi等[37]将DDA方法应用在矿山岩暴分析中;戴华阳等[38]提出了急倾斜煤层开采地表非连续变形的度量方法。

DDA方法主要是针对岩石介质的,T.C.Ke 等[39]、P.A.Thomas 等[40]、Yuzo Ohnishi等[41]、Kuokai Shyu 等[42]将其应用在土力学中,给出了颗粒体介质DDA的算法;Y.N.Oh等[43]将DDA方法应用在海堤基础及地基土的相互作用中;L.K.Chien[44]等将DDA方法应用在海床的冲刷与回填稳定性分析中;张国新等[45]采用正多边形体代替圆形颗粒体来模拟土的应力-应变关系。

国内外学者对DDA的大量研究,使得该方法更加成熟、更加适合于岩体系统的变形分析。由于DDA方法具有完备的块体运动学理论,且将静力分析与动力分析统一起来,因此其具有处理结构工程、岩体力学以及材料分析等方面的能力。但也应该清晰地看到,DDA方法问世仅10余年,在具体应用上仍然存在一些不足。我们知道,DDA方法最初是用于解决岩体不连续变形问题的,其用实际结构面所切割的岩块作为分析单元,但目前国内外在研究与应用DDA方法中均忽略了对结构面的调查与研究,往往用假想的规则的块体单元或者考虑了规模比较大的实际结构面所形成的块体单元进行研究[46],忽略了随机分布的较小规模的结构面,这样的单元仅能用于验证 DDA的有效性,而不能用于实际工程中;另外目前的研究忽略了结构面的充填厚度,实际上结构面的充填物对岩体的稳定性具有重要的影响。从工程实践来看,结构面不论规模大小几乎都有一定程度的充填,结构面的充填物不能像文献[47]等那样简单地理解为软弱夹层,充填的是泥土、碎石土等,事实上,在新鲜岩体内结构面的充填物具有相当高的弹性模量,且充填厚度与结构面的规模成一定比例关系[48]。岩体变形包括结构体(块体)变形和结构面变形,因此块体系统的变形不仅发生在块体本身,也包括结构面的变形,而且块体本身的变形往往小于结构面的变形,因此要合理地描述整个块体系统的变形,应该研究结构面的变形对整个块体系统变形的贡献。

⑼ bresenham算法 和 dda 算法哪个效果好

esenham算法的特点是:
1,不必计算直线之斜率,因此不做除法;
2,不用浮点数,只用整数;
3,只做整数加减法和乘2运算,而乘2运算可以用硬件移位实现.
Bresenham算法速度很快,并适于用硬件实现.
DDA算法的特点:
浮点数运算
不易硬件实现
中点画线法特点:
只有整数运算,不含乘除法
可用硬件实现
因(X0,Y0)在直线上,所以F(X0,Y

⑽ DDA算法的算法思想

直线的基本微分方程为: 。
设直线通过点 和 ,则直线方程可表示为: 。
如果已知第 点的坐标,可用步长 和 得到第 点的坐标为:


如下图:


将算得的直线上每个点的当前坐标,按四舍五入得到光栅点的位置。

热点内容
电脑采用的服务器 发布:2024-12-25 12:25:59 浏览:644
php网页的验证码 发布:2024-12-25 12:25:02 浏览:648
php季度 发布:2024-12-25 12:11:55 浏览:230
编程电缆制作 发布:2024-12-25 12:09:27 浏览:726
php怎么重启 发布:2024-12-25 12:09:26 浏览:524
魔兽脚本组队 发布:2024-12-25 12:03:35 浏览:495
在线直播加密 发布:2024-12-25 11:53:12 浏览:575
深圳医保卡的初始密码是什么 发布:2024-12-25 11:35:20 浏览:385
linux内核完全剖析 发布:2024-12-25 11:19:10 浏览:13
哪个云服务器好用云服务器推荐 发布:2024-12-25 11:16:18 浏览:990