본문 바로가기
반응형

stl9

[Matlab으로 STL파일 다루기] 11. STL 불러와서 평면과 교점구하기 11. STL 불러와서 평면과 교점구하기 5강에서 만들었던 hammer_remesh.stl을 불러와서 평면으로 자른 교점을 구해봅시다. mystl=stlread('hammer_remesh.stl'); 10강에서 만든 코드를 그대로 적용해줍니다. #한 face를 구성하는 점들을 같은 행에 저장 vertices_by_f=0;for i=1:size(mystl.faces)(1) for j=1:3 a=mystl.faces(i,j); vertices_by_f(i,(3*j-2):3*j)=mystl.vertices(a,:); end end #평면의 방정식 2x+3y-z=0PL=[2 3 -1 0]; #평면과 모서리 사이의 교점 구하기for i=1:size(mystl.faces)(1)p1=vertices_by_f(i,1:.. 2020. 1. 8.
[Matlab으로 STL파일 다루기] 10. STL과 평면의 교점구하기 10. STL과 평면의 교점구하기 7강에서 만들었던 stl을 가져옵시다. a1=[1 0 0];a2=[1 1 0];a3=[0 1 0];a4=[0 0 0];a5=[1 0 1];a6=[1 1 1];a7=[0 1 1];a8=[0 0 1]; mystl.vertices=[ %아랫면 a1;a2;a3; a1;a3;a4; %윗면 a5;a6;a7; a5;a7;a8 %앞면 a1;a2;a5; a5;a2;a6; %뒷면 a4;a3;a7; a4;a7;a8; %좌측면 a1;a5;a4; a5;a4;a8; %우측면 a2;a3;a6; a6;a3;a7; ]; mystl.faces=[1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15; 16 17 18; 19 20 21; 22 23 24; 25 26 27; 28 29 30.. 2020. 1. 7.
[Matlab으로 STL파일 다루기] 9. 평면으로 STL 자른 단면 만들기 (2) 두 점과 평면의 교점을 구하는 함수 stl 위에서 triangle을 만들고 있는 인접한 두 점의 모든 조합과, 평면과의 교점을 구해야 합니다. 교점들을 연결하면 단면이 됩니다. 아래와 같은 단계로, 두 점을 이은 선분과 평면사이의 교점 존재 여부를 판별합니다. Step) 두 점 사이에 평면이 있는지 확인→ 있다면 교점 저장→ 없다면 교점 없음 두 점 사이에 평면이 있는지 여부를 판별해야 합니다. 두 점을 P1, P2, 평면의 법선벡터를 n, 평면 위의 한 점을 Q라고 놓겠습니다. 평면 위의 한 점 Q와 각 두점을 연결한 벡터 QP1 과 QP2를 만듭니다. 이 벡터를 법선벡터 n에 투영한 벡터를 벡터 Q1P1 과 Q2P2로 놓겠습니다. 이 두 벡터의 방향이 같다면 평면과의 교점이 없는 것이고, 두 벡터의 방향이 다르다면 평면과의 교점이 있는.. 2019. 12. 6.
[Matlab으로 STL파일 다루기] 8. 평면으로 STL 자른 단면 만들기 (1) 예제 설명 지난 강의에서 만든 STL을 가져옵시다. 매트랩 코드는 아래와 같습니다. a1=[1 0 0];a2=[1 1 0];a3=[0 1 0];a4=[0 0 0];a5=[1 0 1];a6=[1 1 1];a7=[0 1 1];a8=[0 0 1]; mystl.vertices=[ %아랫면 a1;a2;a3; a1;a3;a4; %윗면 a5;a6;a7; a5;a7;a8 %앞면 a1;a2;a5; a5;a2;a6; %뒷면 a4;a3;a7; a4;a7;a8; %좌측면 a1;a5;a4; a5;a4;a8; %우측면 a2;a3;a6; a6;a3;a7; ]; mystl.faces=[1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15; 16 17 18; 19 20 21; 22 23 24; 25 26 27; 28 29 30.. 2019. 12. 6.
[Matlab으로 STL파일 다루기] 7. 간단한 STL 직접 만들어보기 이번에는 간단한 stl을 직접 만들어봅시다. 아래와 같은 정육면체를 만들어볼겁니다. 먼저 점들을 정의합시다. 아래와 같은 이름으로 정의할겁니다. 8개의 점을 정의한 코드는 매트랩 코드는 아래와 같습니다. a1=[1 0 0]; a2=[1 1 0]; a3=[0 1 0]; a4=[0 0 0]; a5=[1 0 1]; a6=[1 1 1]; a7=[0 1 1]; a8=[0 0 1]; 이 점들을 이용하여 vertices를 만듭시다. 위에서 부터 3개씩 연결하여 하나의 face를 만들 것입니다. 알아보기 쉽도록 아래와 같이 쓰겠습니다. mystl.vertices=[ %아랫면 a1;a2;a3; a1;a3;a4; %윗면 a5;a6;a7; a5;a7;a8 %앞면 a1;a2;a5; a5;a2;a6; %뒷면 a4;a3;a7; .. 2019. 11. 6.
[Matlab으로 STL파일 다루기] 6. STL 의 구조 지난시간까지 만들었던 복잡한 STL 모델은 저장해두고, 간단한 모델부터 다시 시작해봅시다. 간단한 모델에 여러 기법들을 적용해 보고, 복잡한 모델로 확장하는 방식으로 진행하겠습니다. 간단한 STL 모델을 직접 만들려면 STL의 구조를 이해해야합니다. 아래와 같은 정사면체를 다른 프로그램으로 모델링하였습니다. STL 파일입니다. 아래 코드를 이용하여 매트랩에서 stl을 불러왔습니다. fv1=stlread('tetrah.stl'); faces 는 아래와 같습니다. vertices 는 아래와 같습니다. vertices는 점입니다. 각 행에 점의 좌표가 입력됩니다. 행의 번호가 곧 점의 번호입니다. faces는 점 세개를 연결하여 면을 만듭니다. 행에 입력된 세개의 값이, 세개의 점의 번호를 의미합니다. 예를들.. 2019. 11. 4.
[Matlab으로 STL파일 다루기] 5. Remesh (refine mesh) , 화면분할 그래프 STL 매쉬가 지저분해서 remesh를 해주었습니다. 매트랩에는 적당한 함수가 없어서(못찾았을 수도), 다른 프로그램을 이용해서 remesh를 했습니다. remesh 전과 후 STL을 첨부하겠습니다. remesh 전과 후의 stl을 모두 불러오고 그래프로 비교하는 코드입니다. subplot이라는 함수를 이용했는데요. 아래와 같은 원리로 사용합니다. subplot(세로방향 화면분할 수, 가로방향화면분할 수, 몇번째인지) 아래는 전체 코드와 실행 결과입니다. fv1=stlread('hammer.stl'); fv2=stlread('hammer_remesh.stl'); subplot(1,2,1);patch('Faces',fv1.faces,... 'Vertices',fv1.vertices,... 'FaceColo.. 2018. 11. 21.
[Matlab으로 STL파일 다루기] 3. STL 보는 법 3. STL 보는 법 STL을 불러왔으면 어떻게 생겼는지 눈으로 확인해야 겠죠? patch 함수를 사용합니다. 이번시간부터는 편집기를 사용합시다. 1) 새로만들기를 누르고 m파일을 하나 생성해줍니다. 2) stl파일을 불러옵니다. 편집기에 코드를 입력하고 '실행' 또는 F5를 눌러주면 됩니다. 3) patch 함수를 사용합니다. 색 입력 외에도 더 많은 기능이 있지만 오늘은 색 지정까지만 사용하겠습니다. 출력 결과는 아래와 같습니다. 2018. 11. 17.
[Matlab으로 STL파일 다루기] 2. STL 불러오기 2. STL 불러오기 1) MathWorks 홈페이지에서 STL Files Reader를 다운받습니다. 2) 다운받으면 STLRead라는 폴더가 받아지는데, MyFunction이라는 폴더를 만들어서 안에 넣어줍니다. 앞으로 사용할 함수들은 MyFunction 폴더에 넣어주겠습니다. 3) 매트랩을 열고 MyStl 폴더와 MyFunction 폴더를 경로에 추가해줍니다. 4) 아래와 같은 코드를 입력합니다. Structure가 불러와집니다. 내부를 열어보겠습니다. faces에는 stl 의 각 면을 구성하는 점의 번호가 저장되어 있습니다.vertices에는 stl 점들의 좌표가 저장되어 있습니다. STL에는 하나의 정보가 더 있습니다. 각 face의 법선벡터인 normal 정보인데요. 이 정보도 함께불러오는 방.. 2018. 11. 15.
반응형