導航:首頁 > 源碼編譯 > 實現線條連續移動的演算法

實現線條連續移動的演算法

發布時間:2023-09-23 05:28:04

⑴ 直線掃描演算法(個人總結,僅供參考)

直線掃描演算法主要包含三種演算法,DDA演算法、中點畫線演算法、Bresenham直線演算法。

這三種演算法都要事先要確定兩個端點(起點和終點),從起點開始每次走一步,每走一步畫一個點,直至到達終點。

這個前提也比較好理解,因為如果朝斜率大的方向走,可能沒走幾步就走完了,那畫出來的直線就是離散的。

以下我們宏隱只討論朝x方向移動的情況。(y方向的情況是一樣的)

DDA演算法實際上是根據 斜截式直線方程 來畫的。

但這么做實際上是比較消耗性能的,因為斜截式方程, 它涉及到了乘法運算 。因此我們需要通過 增量思想 對它進行優化。

這樣轉換後,我們就可以根據當前的位置來找到下一步的位置,且每次計算只需要進行一次 浮點的加法運算 ,一次四捨五入取整即蔽歷廳可。

中點畫線演算法實際上是根據 一般式直線方程 來畫的。它是通過判斷中點在直線的下方還是上方,來決定下一步的坐標位置。

但這樣也是非常消耗性能的,把中點帶入F(x, y)中,會涉及到2個乘法,4個加法。我們依然可以通過增量的方式來對它進行優化。

這樣我們就優化到每次只需要一次 整數加法 即可,且還不需要四捨五入。因此它要更優於DDA演算法。

Breseham演算法是通過比較d(交點與交點下方最近的點的距離)來進行選擇的。d每次按照k的大小增加。

但這么做依舊和DDA演算法一樣,會涉及到浮點數k的加法。我們可以通過 換元的方式 對它進行下優化。

這樣就能使得每次進行一次或兩次的 整數加法運算 ,不需要四捨五入。效率高於DDA,低於中點畫線演算法。

但Bresenham演算法不依賴直線方程,使得它能有更寬泛爛中的適用范圍。

閱讀全文

與實現線條連續移動的演算法相關的資料

熱點內容
雷霆戰機伺服器異常是什麼問題 瀏覽:667
程序員客棧20 瀏覽:252
化妝pdf下載 瀏覽:923
takla伺服器ip地址 瀏覽:357
歐盟加密資產法律 瀏覽:573
威綸通反編譯密碼是多少 瀏覽:201
51單片機有40個外部引腳 瀏覽:956
山西撥號伺服器雲空間 瀏覽:714
python中階乘怎麼計算 瀏覽:530
linux查看塊大小 瀏覽:554
空調壓縮機壓力低 瀏覽:183
pdf怎麼復制粘貼文字 瀏覽:574
網上認證系統認證伺服器地址 瀏覽:302
沒有電腦怎麼領阿貝雲的伺服器 瀏覽:19
螺旋箍筋的演算法 瀏覽:267
網易進不去伺服器怎麼回事電腦版 瀏覽:892
誅仙伺服器怎麼連接 瀏覽:127
程序員怎麼工作可以讓肩膀不疼 瀏覽:572
android半圓進度條 瀏覽:856
單片機一位數碼管顯示實驗原理 瀏覽:943