Openmesh, полигональная триангуляция - PullRequest
0 голосов
/ 02 июля 2019

Кто-нибудь знает, может ли библиотека 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)
...