MATLAB Answers

Stitch two surfaces along their edge in 3d

10 views (last 30 days)
Hello,
Is it possible to stitch two surfaces (3d) along their edge to form a surface between them?
  4 Comments
Nataliya Perevoshchikova
Nataliya Perevoshchikova on 1 Apr 2019
Faces1 =
13 17 4
19 18 17
11 6 2
15 9 6
4 10 13
15 13 10
1 3 11
8 11 3
11 8 14
15 7 9
15 10 7
13 15 19
6 19 15
17 13 19
2 1 11
5 11 14
12 11 5
19 16 18
12 16 11
6 11 16
6 16 19
Vertices1 =
-0.9373 7.6916 -648.2637
-0.8579 7.4760 -647.4918
-1.0501 7.7414 -649.0116
-0.5848 8.6325 -645.2425
-0.7854 9.0888 -648.1130
-0.6972 7.9258 -646.4067
-0.7373 8.1480 -645.3852
-0.9621 8.4652 -649.0186
-0.6751 7.9839 -645.8602
-0.6876 8.4840 -645.0850
-0.7412 8.6153 -647.4756
-0.8000 9.1263 -647.5507
-0.5211 8.8157 -645.8041
-0.8117 8.8818 -648.3801
-0.5950 8.4869 -645.8868
-0.6234 9.1628 -646.8750
-0.4994 9.1520 -645.8782
-0.5593 9.3296 -646.3773
-0.5715 8.9580 -646.3603
Faces2 =
7 5 4
14 13 10
10 9 12
8 3 5
10 1 9
10 4 1
10 12 15
2 8 11
10 7 4
10 15 14
10 13 11
8 7 10
2 11 6
11 8 10
3 8 2
5 7 8
Vertices2 =
1.3932 8.2533 -643.9472
1.5729 7.7014 -647.2515
1.3217 7.6907 -646.4751
1.3211 8.3274 -644.4461
1.3071 8.0786 -645.7357
1.7985 7.3586 -648.2582
1.6118 8.5291 -644.9382
1.8661 8.1444 -646.7384
2.4238 8.5583 -643.3868
2.5365 8.7506 -644.2029
2.6570 8.2030 -647.6214
2.9696 8.7519 -643.3416
3.5279 8.9550 -646.0495
4.2873 8.9684 -646.1083
4.3092 9.1687 -643.8436
I could not attach zip file

Sign in to comment.

Accepted Answer

KSSV
KSSV on 1 Apr 2019
t1 = [ 13 17 4
19 18 17
11 6 2
15 9 6
4 10 13
15 13 10
1 3 11
8 11 3
11 8 14
15 7 9
15 10 7
13 15 19
6 19 15
17 13 19
2 1 11
5 11 14
12 11 5
19 16 18
12 16 11
6 11 16
6 16 19] ;
p1 =[ -0.9373 7.6916 -648.2637
-0.8579 7.4760 -647.4918
-1.0501 7.7414 -649.0116
-0.5848 8.6325 -645.2425
-0.7854 9.0888 -648.1130
-0.6972 7.9258 -646.4067
-0.7373 8.1480 -645.3852
-0.9621 8.4652 -649.0186
-0.6751 7.9839 -645.8602
-0.6876 8.4840 -645.0850
-0.7412 8.6153 -647.4756
-0.8000 9.1263 -647.5507
-0.5211 8.8157 -645.8041
-0.8117 8.8818 -648.3801
-0.5950 8.4869 -645.8868
-0.6234 9.1628 -646.8750
-0.4994 9.1520 -645.8782
-0.5593 9.3296 -646.3773
-0.5715 8.9580 -646.3603] ;
t2 = [7 5 4
14 13 10
10 9 12
8 3 5
10 1 9
10 4 1
10 12 15
2 8 11
10 7 4
10 15 14
10 13 11
8 7 10
2 11 6
11 8 10
3 8 2
5 7 8 ] ;
p2 =[1.3932 8.2533 -643.9472
1.5729 7.7014 -647.2515
1.3217 7.6907 -646.4751
1.3211 8.3274 -644.4461
1.3071 8.0786 -645.7357
1.7985 7.3586 -648.2582
1.6118 8.5291 -644.9382
1.8661 8.1444 -646.7384
2.4238 8.5583 -643.3868
2.5365 8.7506 -644.2029
2.6570 8.2030 -647.6214
2.9696 8.7519 -643.3416
3.5279 8.9550 -646.0495
4.2873 8.9684 -646.1083
4.3092 9.1687 -643.8436 ] ;
p12 = [p1 ; p2] ;
dt = delaunayTriangulation(p12(:,1),p12(:,2),p12(:,3)) ;
tetramesh(dt)
  3 Comments
Nataliya Perevoshchikova
Nataliya Perevoshchikova on 1 Apr 2019
Look into HELP_delaunayZip
delaunayZip function from this documnetation does not work for my two surfaces. But I want to do something similar.

Sign in to comment.

More Answers (2)

Nataliya Perevoshchikova
Nataliya Perevoshchikova on 1 Apr 2019
The question is still not solved. If someone can share idea, it would be great

Nataliya Perevoshchikova
Nataliya Perevoshchikova on 2 Apr 2019
It seems I found the solution. Below the example is listed. patchBoundary and edgeListToCurve are taken from GIBBON (https://www.gibboncode.org/Documentation/)
[Eb1,E1,indBoundary1]=patchBoundary(Faces1,Vertices1);
[ind1]=edgeListToCurve(Eb1);
ind1=ind1(1:end)';
[Eb2,E2,indBoundary2]=patchBoundary(Faces2,Vertices2);
[ind2]=edgeListToCurve(Eb2);
ind2=ind2(1:end)';
P = [Vertices1(ind1,:); Vertices2(ind2,:)] ;
k = boundary(P);
Faces=k;
Vertices=P;
trisurf(k,P(:,1),P(:,2),P(:,3),'Facecolor','red','FaceAlpha',1)
or
patch('Faces',Faces,'Vertices',Vertices,'FaceColor','r','FaceAlpha',faceAlpha1);

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!