2009-08-28 132 views
2

當用戶在平板電腦上拖動手寫筆時,會收到一系列座標。你想用一條平滑線逼近筆的路徑,僅在其後面有幾個採樣點。你會如何做到這一點?從平板電腦輸入中繪製平滑線

換句話說,如果用戶在平板電腦上繪製平滑響應線,該如何呈現?用直線連接點不夠好。無論樣本點有多遠或多遠,真正的繪圖程序都能更好地彎曲線條。有些人甚至會讓你給他們一個數字來表明要完成平滑的數量,並記錄下緊張的筆和手。我在哪裏可以學會做這些東西?

+0

相關HT TP://計算器。COM /問題/ 3347483 /寫一個油漆程序-A-LA-MS-油漆如何對插值之間,鼠標移動前夕 – kervin 2011-01-18 21:40:44

回答

2

我知道這是一個老問題,但我有同樣的問題,我帶着2個不同的解決方案:

  • 第一種方法是使用兩個決議:一,當用戶插入路徑點用直線連接它們。二,當用戶完成筆畫時,刪除線條並在其上繪製和繪製。這應該比直線更平滑。

  • 第二種方法是使用前一個採樣點的加權平均值來平滑新點。所以每次你得到一個新的採樣點[x1,y1]而不是直接繪製它時,你需要取前一個採樣點[x2,y2],並創建一個新的中間點ith兩個點的加權平均值。僞碼可能類似於:

    newPoint = [x1,y1]; oldPoint = [x2,y2]; (x1 * 0.3)+(x2 * 0.7),(y1 * 0.3)+(y2 * 0.7)];其中, oldPoint = newPoint;

    爲0.7和0.3的加權平均係數(你可以改變他們得到你想要的平滑:)

我希望這將有助於

更新12月13日:這是一個文章說明不同的繪圖方法,存在能夠提供良好的概念(邊緣平滑,貝塞爾曲線,光滑關節)

http://perfectionkills.com/exploring-canvas-drawing-techniques/

0

我從來不需要實現這些(僅用於學術目的),但您可能想看看維基百科的interpolation文章。

從製品提取:

插值是一組離散的已知數據點的範圍內構建新的數據點的方法。

在工程和科學中,通常有許多數據點是通過採樣或實驗獲得的,並試圖構建與這些數據點非常接近的函數。這稱爲曲線擬合或迴歸分析。插值是曲線擬合的一個特例,其中函數必須精確地穿過數據點。

希望它有幫助。