當前位置:首頁 » 操作系統 » 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演算法的演算法思想

直線的基本微分方程為: 。
設直線通過點 和 ,則直線方程可表示為: 。
如果已知第 點的坐標,可用步長 和 得到第 點的坐標為:


如下圖:


將算得的直線上每個點的當前坐標,按四捨五入得到光柵點的位置。

熱點內容
安卓導航cd怎麼用 發布:2024-11-16 14:37:06 瀏覽:801
mysql同步兩個資料庫 發布:2024-11-16 14:20:55 瀏覽:759
北京php培訓 發布:2024-11-16 14:20:39 瀏覽:495
新秀麗拉桿箱密碼忘了怎麼辦 發布:2024-11-16 14:05:31 瀏覽:268
為什麼有些國外安卓機不支持電信 發布:2024-11-16 13:49:26 瀏覽:504
唱吧安卓版怎麼樣 發布:2024-11-16 13:39:43 瀏覽:336
抖音思維演算法 發布:2024-11-16 13:31:02 瀏覽:592
沈陽解壓店 發布:2024-11-16 13:28:36 瀏覽:171
集團雲伺服器 發布:2024-11-16 13:26:47 瀏覽:368
java源碼關聯 發布:2024-11-16 13:22:57 瀏覽:322