關於我們 最新消息 程式製作 作品下載 教學資源 友站連結


教學資源

3D閉門造車 -> 三角形填色演算法

為何名為3D閉門造車?是的,我們要做的是將本來教給顯示卡,函式庫的工作,都自己做一次,來了解其原理和背後的運作,聽起來好像有點蠢,不過有其中的樂趣在,以下演算法,是我自己想出來的,沒有參考別的資料,有錯誤的話,請來信告知,謝謝

首先,3D的畫面,是由我們熟知的三角形構成的,即然是由三角形構成的,那麼,畫三角形的畫法,是一定要知道的,雖然有現成的很多東西都可以幫我們畫三角形,但是即然名為閉門造車,就是要自己畫

三角形,有三個點,是的,這是廢話,我們的三角形由ABC三個點構成

1.在三個點填色

2.找出Y座標差最多的兩個點,也就是|Ay-By|,|Ay-Cy|,|By-Cy|三個之中找出最大的一個,這兩個點

3.算出移動一個PixelY軸座標的向量,我們的例子裡,是A點和B點,然後BA向量和BC向量,算出移動一個Pixel長度的Y軸座標的向量是多少

4.延著BA和BC向量向上遞增,每增一次就將兩點座標之間的顏色填滿,一直重覆到A點結束


填色的順序


填好三個點


填好所有點的完成圖