2015-11-01 62 views
2

當前我正在使用「Douglas Peucker」算法。如何使用自由流繪圖工具最小化繪製點的保存點

我的問題是,當我畫畫時,先前繪製的線條也在改變哪一個當然不現實。是否有其他替代算法來最小化保存的點數,但不改變以前繪製的點或其他方式來改變「道格拉斯皮克」以適應我的需要?

+0

爾。你想要一個不簡化的簡化工具? – zipzit

+0

說真的,只是改變你的容忍度,直到你得到準確和存儲大小的正確混合。 – zipzit

+0

如果你是非凡的程序員,你可以寫一個樣條實現。 (貝塞爾,Bspline,NURB等)。 Cat Mull Spline是我的建議,因爲它使用輸出曲線上的控制點。我會說這是一項巨大的任務。 – zipzit

回答

2

給你的鉛筆繪圖工具2種繪圖可選方法:

  • 使用繪製鼠標移動的道路上一個新的點(這是您當前自由法)。這個選項可以讓用戶添加很多點,這樣可以使他們在繪圖中非常詳細。

  • 只有在mousedown時纔在路徑上繪製一個新點。該選項只是將路徑上的前一點連接到新點擊的點。這個選項可以讓用戶添加幾條非常直的線條,這些線條可以讓他們用長長的直邊勾勒出輪廓。

如果你所關心的任意形狀的路徑當用戶在繪圖可以應用簡化算法只是一次之後,他們已經停止移動鼠標,1秒改變。

如果您指定Douglas-Peucker算法使用高精度偏差,那麼簡化路徑將保持與非簡化路徑完全相同。

順便說一句,如果你想通過你的點來繪製樣條曲線,然後看看這個漂亮以前的帖子:how to draw smooth curve through N points using javascript HTML5 canvas?

+0

非常有趣的答案。糾正我,如果我錯了,我可以使用Cat Mull Spline來最小化保存的點數? – jt25

+0

編號Cat-Mull樣條曲線用曲線連接一組點,但它們不會最小化該組中的點數。 Cat-Mull可以製作一條路徑「曲線」(「更漂亮?」),但它不會做任何事情來最小化保存點的數量。 – markE

+0

謝謝你。似乎我現在唯一的選擇是修改Douglas-Peucker以滿足我的需求 – jt25