三角形是平面上最簡單的多邊形。三角形有許多「好性質」,例如,任何三角形在空間中,三個頂點一定共平面;三角形一定是凸多邊形(多邊形上任取兩個點的連線,若線上的所有點都在此多邊形內,稱為凸多邊形);任何兩個頂點的連線一定不會交叉,等等。因此三角形常做為電腦繪圖的基本元件。 多個三角形可以組成三角網格: 有一種三角網格的變換,把兩個相鄰的頂點合併,如下圖左,$v_1$ 合併至 $v_2$,變成下圖右,$\overline{v_1 v_2}$ 兩邊的兩個三角形消失: 一個方形三角網格可以透過一連串的頂點合併,在整體外型不變的前提下,化簡成兩個三角形: 合併的順序端視規則,例如,應用在地形模塑,每個網格的頂點都對應一個高度資訊,頂點合併的順序可以是,頂點合併後,三角形上的高度誤差最小的頂點先合併。頂點合併前後的誤差,舉例如下圖: 將合併的結果反過來看,原始的三角網格變成一個簡化的三角網格,加上一連串頂點合併的反運算,即頂點分裂: $$ M = M_0 + vsplit(v_{i_1}, v_{i_2}) + vsplit(v_{i_2}, v_{i_3}) + \cdots $$ 如此,$M_0 + \sum_{k=1}^n vsplit_k$ 可視為 $M$ 的一種壓縮格式,隨著 $M_0$ 加上越多的 $vsplit_k$ 而越接近 $M$ 。 並非所有任意的頂點合併都是合法的。例如,一般希望頂點合併後,三角形不會發生重疊。下圖是一個頂點合併後發生三角形重疊的例子: 如何知道是否發生三角形重疊?一種方法是把三角形放在一個三維空間,計算三角形的法向量(normal vector)在頂點合併後是否改變方向: 法向量 $\vec{n}$ 的計算,可透過外積: $$ \vec{n} = \overrightarrow{v_av_b} \times \overrightarrow{v_av_c} $$ 若三角形放在 $x-y$ 平面 ($z=0$),則 $\vec{n}$ 可表示為一個數字 $$ \vec{n} = [0, 0, n] \\ n = (v_{b_x} - v_{a_x})(v_{c_y} - v_{a_y}) - (v_{b_y} - v_{a_y})(v_{c_x} - v_{a_x}) $$ 另一種...