2011-05-14 41 views

回答

9

請參閱Bresenham's algorithm

+3

在現實中,當然,如果您現在很少使用這種功能,那麼您將它留給圖形API。但偶爾也值得了解其他問題的結果。例如,您需要更新每個滴答事件的整數時間變量 - 但滴答事件以非整數間隔進入。只要這個間隔是合理的,基於Bresenhams的方法可以保持這個時間沒有累積誤差。 – Steve314 2011-05-14 10:24:50

+0

@Steve:即使在今天也有很多用途......例如在2D網格上移動播放器,通過3D網格追蹤光線(需要修改)等... – ybungalobill 2011-05-14 11:58:20

4

沒有「逐點」算法 - 點無限小,所以任何基於點的算法都需要無限的時間才能完成。

取而代之的是,根據理論筆的寬度繪製線條,並計算用筆劃過線條的像素的數量和強度。

如果您只想像像1970年代那樣開啓和關閉像素,那麼請使用Brensenham算法系列之一。

大多數現代計算機圖形學使用抗鋸齒算法 - 無論是撫摸,二次採樣還是精確的像素覆蓋率 - 有時還有GPU中的並行算法(例如,通過在平面上投影薄矩形來繪製直線或執行覆蓋並行計算每像素)。

許多圖形算法都基於貝塞爾曲線;直線只是控制點在一條直線上的曲線,所以繪製它們的算法是相同的,但可能會進行一些優化。

+1

+1 - 但我已經看到大量關於使用術語「點」代替「像素」的圖形的書寫」。我同意「像素」更好,但數學家沒有任何特殊的力量來定義英語。 – Steve314 2011-05-14 10:17:21