目標是通過在屏幕上拖動鼠標像多邊形形狀的畫筆一樣進行簡單的矢量圖像編輯,創建畫筆的Minkowski sum和鼠標的路徑。新的多邊形將從任何先前存在的不同顏色的多邊形中減去,並與任何現有的相同顏色的多邊形合併。通過拖動多邊形作爲畫筆來編輯矢量圖像
該計劃將每個鼠標移動作爲從鼠標上一個位置到其當前位置的線段,計算該線段上的Minkowski和,然後使用Weiler–Atherton clipping algorithm更新現有多邊形以包含該Minkowski和。
由於Weiler-Atherton似乎可能會導致UI延遲,如果爲每個鼠標移動運行,我們計劃通過將其放入另一個線程來延遲該步驟,這可能需要時間趕上最新的鼠標移動,或者保存所有Weiler-Atherton計算直到繪圖完成,然後在保存時將其作爲批量操作進行。我們擔心這可能會導致大量重疊多邊形的積累,從而導致用戶界面延遲渲染它們所需的時間。
問題是:上述計劃是Inkscape和其他嚴肅的矢量圖形編輯軟件將執行此操作的方式?這似乎是一個瘋狂的計劃,無論是在算法的詭計和計算複雜性。專家會做什麼?
正在考慮的另一種選擇:使用簡單的光柵操作進行繪畫,然後將光柵轉換爲矢量圖像作爲最後一步。從柵格到矢量的轉換看起來不及Weiler-Atherton那麼棘手,最終輸出的質量可能會受到影響,但它可能是更好的選擇嗎?
爲每個鼠標移動運行這些算法似乎不太可能會導致性能問題。計算機遊戲引擎每幀運行的計算幾何數量大大增加。 – jkff