2011-04-20 59 views
4

我在wiki-pedia和其他地方從僞代碼實現/複製了wu線算法。將多條消除鋸齒的線連接在一起

繪製正弦波時,它會在線從y佔優勢變爲x佔優勢(或相反)的地方出現故障。 (因爲它看起來很可怕,我不需要他們爲我的目的,我沒有抄端點代碼。)

有誰知道這個問題的解決方案?如果沒有,我將自己修改算法以使其運行。我只是好奇,如果別人遇到這個問題,並知道如何解決它。是否可以實現,而不是全局意識到彼此?或者這就是爲什麼繪製API的工具moveto和lineto功能?

The pseudo code

+1

這是吳氏算法的一個假象。它可以是水平像素或垂直像素的別名。因此,當你將它稱爲「顯性」到「顯性」或「vv」時,你會看到線條變化時的效果。由於算法的本質,在wu框架內沒有辦法解決這個問題。 – Howard 2011-04-20 16:34:37

+0

我想要做的就是畫出一些可以工作的線條,看起來不像****。任何人推薦另一種算法或方法? – 2011-04-20 17:07:57

+0

我想我將不得不跟蹤斜率並相應地調整算法。 – 2011-04-20 17:13:43

回答

1

我只是想跟進並關閉它。我以爲我已經從網站上發佈的算法中刪除了端點代碼。但是,我犯了一個錯誤,並沒有刪除所有這些,所以這就是線路斷線的原因。下面是最終的結果:

如果你仔細觀察的話,你可以看到強度跳了一下,當線被Y型顯性到顯性X,反之亦然改變。這也是因爲該線不到一個像素長。我想以更高的分辨率畫出一條線,然後下抽樣會產生像Guy Sirton所建議的更高質量的結果。但是這對我的目的來說已經足夠了。

1

如果性能是不是一個大問題,你可以採取一個比較幼稚的方法來繪製反鋸齒線,如:

  • 繪製在一個更高的分辨率網格線(例如某個整數你的目標分辨率是多個) - 你需要調整它們的厚度。
  • 將每個n×m像素的塊轉換爲單個像素(例如,通過平均RGB值。

根據您正在開發的語言或操作系統,可能會內置功能來簡化此操作。

或者,您可以計算每行像素的哪部分被行覆蓋(通過將像素平方與行相交)來計算像素值,使像素強度相對於行覆蓋的像素區域部分。

+0

吳線算法已經這樣做。問題在於分數點的繪製線。有一個四捨五入的問題。我正在做。 – 2011-04-24 00:21:44