массив numpy для привязок CGAL - PullRequest
0 голосов
/ 11 декабря 2018

Я смотрел на привязки cgal.

У меня есть массив numpy 8000 x, y, z координат

[991.495 , 268.0944, 192.412 ],
[991.496 , 268.0823, 192.4133],
[991.4993, 268.1071, 192.4103],

Я хотел бы использовать CGAL, яя пытаюсь использовать простую триангуляцию_3 https://github.com/CGAL/cgal-swig-bindings/wiki/BindingsExamples

В конечном итоге я хотел бы превратить облако точек в многогранную и сохранить его как файл xyz, но, думаю, один шаг за раз.

Я установил все зависимости и запустил некоторые примеры.

Вот пример cgal:

from CGAL.CGAL_Kernel import Point_3
from CGAL.CGAL_Triangulation_3 import Delaunay_triangulation_3
from CGAL.CGAL_Triangulation_3 import Delaunay_triangulation_3_Cell_handle
from CGAL.CGAL_Triangulation_3 import Delaunay_triangulation_3_Vertex_handle
from CGAL.CGAL_Triangulation_3 import VERTEX
from CGAL.CGAL_Triangulation_3 import Ref_Locate_type_3
from CGAL.CGAL_Kernel import Ref_int



L=[]
L.append( Point_3(0,0,0) )
L.append( Point_3(1,0,0) )
L.append( Point_3(0,1,0) )

T=Delaunay_triangulation_3(L)

n=T.number_of_vertices()

V=[]
V.append( Point_3(0,0,1) )
V.append( Point_3(1,1,1) )
V.append( Point_3(2,2,2) )

n = n + T.insert(V)

assert n==6
assert T.is_valid()

lt=Ref_Locate_type_3()
li=Ref_int()
lj=Ref_int()
p=Point_3(0,0,0)

c = T.locate(p, lt, li, lj)
assert lt.object() == VERTEX
assert c.vertex(li.object()).point() == p


v = c.vertex( (li.object()+1)&3 )
nc = c.neighbor(li.object())

nli=Ref_int()
assert nc.has_vertex( v, nli )

T.write_to_file("output")

T1 = Delaunay_triangulation_3()
T1.read_from_file("output")

assert T1.is_valid()
assert T1.number_of_vertices() == T.number_of_vertices()
assert T1.number_of_cells() == T.number_of_cells()
...