2017-02-04 11 views
0

Matlab에서 돌 (집계) 점 구름의 표면 삼각형을 만들 필요가 있습니다. 이것을 위해 나는 직교 좌표계에서 x,y,z을가집니다.Matlab의 3D 오브젝트 삼각 측량

간단히 말해 구형 개체로 시작했습니다.

DT = delaunayTriangulation(x,y,z); 
figure 
trisurf(DT.ConnectivityList,DT.Points(:,1),DT.Points(:,2),DT.Points(:,3), ... 
     'FaceColor','cyan','FaceAlpha', 0.8); 

코드를 실행하고 결과는 다음과 같습니다 Triangulation of Spherical Object

는 너무 구 내부의 삼각형을 만든다. 반대쪽 또는 다른 곳에있는 다른 하나에 한 지점 연결.

또한 delaunayTriangulation()은 이상적인 표면을위한 삼각 함수이며 민감한 표면에서는 작동하지 않습니다. 돌의 표면에 대해 생각해보십시오, 거기에 많은 불규칙성이 있습니다.

그럼 나는 DelaunayTri() 함수를 사용해 보았습니다. 그것은 구체 객체를 위해 일했고, 오직 삼각형으로 된 표면이었습니다. 그러나 더 복잡한 (돌) 모양을 시도했을 때,이 기능은 단지 모양을 이상화 시켰으며 돌의 모든 돌출 (불규칙)을 고려하지 않았습니다.

tri = DelaunayTri(x,y,z); 
[FBtri,FBpoints] = freeBoundary(tri); 

figure 
trisurf(FBtri,FBpoints(:,1),FBpoints(:,2),FBpoints(:,3), ... 
     'FaceColor','cyan','FaceAlpha', 0.8); 

위 코드에서 제거 freeBoundary() 함수는 결과가 동일한 경우 (이상화)과 삼각 허용되지 않는 개체 내부에 만들었다.

마지막으로 delaunay() 함수를 사용했습니다. 구가 올바르게 삼각형 화되지 않은 경우도 있습니다.

tri = delaunay(x,y,z); 
figure 
trisurf(tri,x,y,z,'FaceColor','cyan','FaceAlpha', 0.8); 

질문 : 어떤 기능과 방법 (하시기 바랍니다 자세한가) 내가 어떤 모양의 돌 표면의 상세한 3D 삼각 측량을 할 수와? 위의 실수는 코드 위의 무엇입니까?

답변

1

여러분이 시도한 순수한 delaunay 기반 방법 중 어느 것도 원하는대로 할 수 없습니다. 모두 표면의 입력뿐만 아니라 입력의 전체 볼록 선을 테셀레이션합니다.

점 구름으로부터 일반적인 서페이스를 재구성하는 것은 쉬운 일이 아닙니다. 나는 그것이 내장 된 MATLAB 기능을 사용하여 직접 수행 될 수 있다고 생각하지 않는다.

CGAL에서 제공하는 surface-reconstruction 도구와 같은 다른 옵션을 살펴볼 수도 있습니다.