openmesh 基底的剪下

2021-07-10 19:51:14 字數 2313 閱讀 3694

基底的剪下需要將含有高亮的邊的點分割成多個點,如果乙個點有兩個高亮邊,那麼這個點則需要**成兩個點,即需要創造乙個新點,並將所有的點的資訊儲存在半邊結構中
,我們是以出的半邊儲存的。
#include#include #include #include struct mytraits : public openmesh::defaulttraits;};

typedef openmesh::trimesh_arraykerneltmymesh;

using namespace std;

int main()

for (mymesh::edgeiter e_it = mesh.edges_begin(); e_it != mesh.edges_end(); ++e_it)

mymesh::faceiter f_it = mesh.faces_begin();

vectorf_vector;

f_vector.push_back(*f_it);

vector::iterator f_vector_begin;

int begin = 0;

while (begin != f_vector.size())

} begin++;

} //cut unnecessary edges to form homotopy group basis;

bool mark;

while (1)

}if (number == 1)

}} if (!mark)break;

} mesh.property(highlight).set_persistent(true);

//slice-mesh;

openmesh::hprophandlethalf_vertex;

vectorvoh_vector;

mesh.add_property(half_vertex, "he_vertex");

for (mymesh::vertexiter v_it = mesh.vertices_begin(); v_it != mesh.vertices_end(); ++v_it)

} if (valence == 0)

} if (valence == 2)

if (mark == 0 || mark == 2)

else if (mark == 1)

}} if (valence == 3)

if (mark == 0)

else if (mark == 1)

else if (mark == 2)

else if (mark == 3)

}} }

cout << "what is it?" << endl;

//mymesh mymesh;

vectorv_handles;

vectorvhnew;

mapv_handle_map;

vectorfv_handles;

vectorf_handles;

for (mymesh::faceiter f_it = mesh.faces_begin(); f_it != mesh.faces_end(); ++f_it)

/* for (int i = 0; i < f_handles.size(); i++)

if (mesh.property(half_vertex, *fh_it) == v_handles[i])

}if (count == v_handles.size())

} mymesh.add_face(fv_handles);

} */ //上面的**由於太耗費時間,所以用map來縮小時間複雜度,通過乙個map來記錄新建的點的idx,從而直接索引得到所對應的vertexhandle

for (int i = 0; i < f_handles.size(); i++)

else

} mymesh.add_face(fv_handles);

} //這個**的難點在於需要重新生成新點,然後在新點的基礎上重建mesh,在這裡浪費時間較多。

//for (int i = 0; i < v_handles.size(); i++)

//for (int i = 0; i < vhnew.size(); i++)

// write mesh to output.obj

try }

catch (std::exception& x)

cin.get();

return 0;

}

Mac OS X的剪下操作

用windows的朋友都熟悉乙個快捷鍵的組合ctrl x剪下,然後ctrl v貼上到別的目錄,同時刪除原檔案或文字,但習慣用鍵盤快捷鍵的mac使用者可能發現了,這個剪下的操作,對應到mac os x是command x,有的時候不起作用,原因是蘋果認為剪下功能會在使用者忘了貼上時導致檔案丟失。所以雖...

Mac OS X的剪下操作

常用windows的朋友都熟悉乙個快捷鍵的組合ctrl x剪下,然後ctrl v貼上到別的目錄,同時刪除原檔案或文字,但習慣用鍵盤快捷鍵的mac使用者可能發現了,這個剪下的操作,對應到mac os x是command x,有的時候不起作用,原因是蘋果認為剪下功能會在使用者忘了貼上時導致檔案丟失。所以...

不規則形狀的剪下

原理 根據選擇的區域 區域的選擇需要用到graphicspath 根據區域可以得到這部分區域的邊境矩形,從而不需要迴圈整張,只需要迴圈邊境矩形,將矩形中的選擇區域複製到另一種,這樣大大提高了效率。根據選擇的區域,可以得到複製出位於graphicspath中的這部分,同時設定這部分為透明,同時還要設定...