2012-01-13 78 views
1

如何才能獲取二維三角形中所有線的掃描線?獲取任意二維三角形的掃描線

我正在嘗試實現2D軟件渲染器的最基本功能,即紋理映射三角形的最基本功能。我已經完成了比我可以使用OpenGL更多的次數,但是當我嘗試自己做這件事時,我發現自己在跛行。

我看到一些文章說,爲了填充一個三角形(其三個頂點都有紋理座標,夾在[0,1]),我需要在三點之間進行線性插值。什麼?我認爲插值是在兩個n維值之間。

注意;這不適用於3D,它嚴格爲2D,所有三角形都是任意的(不以任何方式對齊軸)。我只需要用OpenGL的方式填充屏幕的紋理。我不能使用OpenGL作爲解決方案。

回答

2

一個很好的答案,並說明可以在這裏找到:http://sol.gfxile.net/tri/index.html

可以使用Bresenham algorithm繪製/發現兩側。

+0

這實際上很有意義,它完全避開了我不得不插入三角形的每一邊,然後從那裏做一條掃描線,我期望有不同的東西。 – Knetic 2012-01-15 22:25:04

+1

@ Knetic - 如果你能想出一個更有效的激進新方法;不要袖手旁觀,不要被目前的做法限制。這是我們進步的唯一途徑。 :) – 2012-01-16 05:17:06

1

如果您使用掃描線算法,處理該問題的一種方法是以兩個步驟進行插值。首先在三角形的邊緣插值,並在開始繪製掃描線時,在該掃描線的起始值和最終值之間進行插值。

由於您在2D中工作,您還可以使用矩陣轉換來獲取紋理座標的屏幕座標。昨天我回答了一個類似的問題here。該技術在數學中被稱爲change of basis