Кто-нибудь знает, может ли библиотека openmesh триангулировать простой замкнутый многоугольник?
В настоящее время я создаю PolyMesh, где граница представлена последовательностью вершин, определяющей простойзамкнутый многоугольник.Однако, когда я сохраняю это в файле .ply, я получаю неправильные результаты.Поэтому я подумал, можно ли указать грань полигона как набор треугольных граней, но для этого мне нужно сначала выполнить триангуляцию.
Мне кажется, что openmesh может это сделать, кто-нибудьзнаете?
К вашему сведению.Я использую pythonm, также стоит упомянуть, что мой многоугольник является плоским.
В качестве примера вы можете посмотреть на следующий слой:
ply
format ascii 1.0
element vertex 6
property float x
property float y
property float z
element face 4
property list uchar int vertex_indices
end_header
-5 -5 0
5 -5 0
5 10 0
0 10 0
0 5 0
-5 5 0
3 3 4 5
3 0 1 5
3 1 2 5
3 2 3 5
Исходные вершины:
-5 -5 0
5 -5 0
5 10 0
0 10 0
0 5 0
-5 5 0
Кусок кода, генерирующий слой:
def test_polymesh():
poly_mesh = om.PolyMesh()
coords_array = \
[
np.array([-5.0, -5.0, 0.0]),
np.array([5.0, -5.0, 0.0]),
np.array([5.0, 10.0, 0.0]),
np.array([0.0, 10.0, 0.0]),
np.array([0.0, 5.0, 0.0]),
np.array([-5.0, 5.0, 0.0])
]
vertex_handle = []
for v in coords_array:
vertex_handle.append(poly_mesh.add_vertex(v))
face_handle = poly_mesh.add_face(vertex_handle)
poly_mesh.triangulate()
om.write_mesh("test_polymesh.ply", poly_mesh)