As-rigid-as possible shape manipulation: 論文詳解目錄

  • 2019 年 10 月 8 日
  • 筆記

我這裡用幾篇文章詳解了論文演算法。詳細說明了輸入輸出,處理過程,並介紹了演算法的應用範圍。該論文演算法分為兩步,這裡的文章將按照演算法的輸入輸出、公式詳解、程式碼實現的方式對演算法做極其詳盡的講解。

這裡對該論文的講解可能是您見到的最詳細的解釋,而且我盡量用簡潔的程式碼來實現演算法。

在這幾篇講解中,我對論文中的每一個公式都做了盡量詳細的講解。最關鍵的是,我使用了Mathematica程式碼來推導公式。放心!Mathematica程式碼非常好懂,可視化效果非常好,寫起來很像手寫公式。另外,Mathematica程式碼還可以輸出論文Latex公式以及C++程式碼,給我編程過程減少很多重複工作量。

您可能會在知乎、CSDN上看到過各種對這篇經典論文的詳解,但都沒有如下文章講解詳細,而且所有人引用的程式碼都是github上別人寫的開源程式碼。絕大部分程式碼寫的都挺複雜,而且文檔非常不詳細,看起來挺費勁的。所以我這裡用C++盡量簡單的實現演算法細節,還專門寫文章來對每個函數做詳解。

  1. 論文介紹
  2. 第一步演算法輸入與輸出
  3. 第一步演算法詳解
  4. 第一步演算法的C++程式碼實現
  5. 第二步演算法輸入與輸出
  6. 第二步演算法的第一小步詳解
  7. 第二步演算法的第一小步程式碼
  8. 第二步演算法的第二小步詳解
  9. 第二步演算法的第二小步程式碼

這裡的程式碼都是開源的。地址為:

https://coding.net/u/forestsen/p/ARAPShapeManipulation

後續將對該論文演算法進行優化。

其中,該論文作者Igarashi教授在2009年發表的一篇文章[1]使用了更直觀更容易理解的思想重新介紹了這篇論文的理論。

引用

[1] Igarashi T , Igarashi Y . Implementing As-Rigid-As-Possible Shape Manipulation and Surface Flattening[J]. Journal of Graphics Gpu & Game Tools, 2009, 14(1):17-30.