how do i merge the two surface of half-torus?
1 view (last 30 days)
Show older comments
hi, can someone help me with how to merge the two half-torus surfaces? i attached the code below and this is the figure of the unmerged torus. thank you!

clc
clear all
close all
%control point for first surface
P0 = [7 2 0]; P1 = [8 1 0]; P2 = [8 1 1]; P3 = [7 2 1];
P4 = [7 7 0]; P5 = [8 8 0]; P6 = [8 8 1]; P7 = [7 7 1];
P8 = [2 7 0]; P9 = [1 8 0]; P10 = [1 8 1]; P11 = [2 7 1];
P12 = [2 2 0]; P13 = [1 1 0]; P14 = [1 1 1]; P15 = [2 2 1];
phi=1;%scaling factor
B1=-1;%shape parameter lambda
B2=-1;%shape parameter miu
G17=phi*((2+B1)/(2+B2))*(P3-P2)+P3
G21=phi*((2+B1)/(2+B2))*(P7-P6)+P7
G25=phi*((2+B1)/(2+B2))*(P11-P10)+P11
G29=phi*((2+B1)/(2+B2))*(P15-P14)+P15
%control point for second surface
P3; G17; P18 = [6 3 0]; P19 = [7 2 0];
P7; G21; P22 = [6 6 0]; P23 = [7 7 0];
P11; G25; P26 = [3 6 0]; P27 = [2 7 0];
P15; G29; P30 = [3 3 0]; P31 = [2 2 0];
%control point for third surface
P44 = [2 0 0]; P45 = [1 1 0]; P46 = [1 1 1]; P47 = [2 0 1];
P32 = [2 -5 0];P33 = [1 -6 0]; P34 = [1 -6 1]; P35 = [2 -5 1];
P36 = [7 -5 0];P37 = [8 -6 0]; P38 = [8 -6 1]; P39 = [7 -5 1];
P40 = [7 0 0];P41 = [8 1 0]; P42 = [8 1 1]; P43 = [7 0 1];
G56=phi*((2+B1)/(2+B2))*(P47-P46)+P47
G57=phi*((2+B1)/(2+B2))*(P35-P34)+P35
G58=phi*((2+B1)/(2+B2))*(P39-P38)+P39
G59=phi*((2+B1)/(2+B2))*(P43-P42)+P43
%control point for fourth surface
P47;G56;P48 = [3 -1 0]; P49 = [2 0 0];
P35;G57;P50 = [3 -4 0]; P51 = [2 -5 0];
P39;G58;P52 = [6 -4 0]; P53 = [7 -5 0];
P43;G59;P54 = [6 -1 0]; P55 = [7 0 0];
Gx=[P0(1) P1(1) P2(1) P3(1);P4(1) P5(1) P6(1) P7(1);P8(1) P9(1) P10(1) P11(1);P12(1) P13(1) P14(1) P15(1)];
Gy=[P0(2) P1(2) P2(2) P3(2);P4(2) P5(2) P6(2) P7(2);P8(2) P9(2) P10(2) P11(2);P12(2) P13(2) P14(2) P15(2)];
Gz=[P0(3) P1(3) P2(3) P3(3);P4(3) P5(3) P6(3) P7(3);P8(3) P9(3) P10(3) P11(3);P12(3) P13(3) P14(3) P15(3)];
Gx1=[P3(1) G17(1) P18(1) P19(1);P7(1) G21(1) P22(1) P23(1);P11(1) G25(1) P26(1) P27(1);P15(1) G29(1) P30(1) P31(1)];
Gy1=[P3(2) G17(2) P18(2) P19(2);P7(2) G21(2) P22(2) P23(2);P11(2) G25(2) P26(2) P27(2);P15(2) G29(2) P30(2) P31(2)];
Gz1=[P3(3) G17(3) P18(3) P19(3);P7(3) G21(3) P22(3) P23(3);P11(3) G25(3) P26(3) P27(3);P15(3) G29(3) P30(3) P31(3)];
Gx2=[P44(1) P45(1) P46(1) P47(1);P32(1) P33(1) P34(1) P35(1);P36(1) P37(1) P38(1) P39(1);P40(1) P41(1) P42(1) P43(1)];
Gy2=[P44(2) P45(2) P46(2) P47(2);P32(2) P33(2) P34(2) P35(2);P36(2) P37(2) P38(2) P39(2);P40(2) P41(2) P42(2) P43(2)];
Gz2=[P44(3) P45(3) P46(3) P47(3);P32(3) P33(3) P34(3) P35(3);P36(3) P37(3) P38(3) P39(3);P40(3) P41(3) P42(3) P43(3)];
Gx3=[P47(1) G56(1) P48(1) P49(1);P35(1) G57(1) P50(1) P51(1);P39(1) G58(1) P52(1) P53(1);P43(1) G59(1) P54(1) P55(1)];
Gy3=[P47(2) G56(2) P48(2) P49(2);P35(2) G57(2) P50(2) P51(2);P39(2) G58(2) P52(2) P53(2);P43(2) G59(2) P54(2) P55(2)];
Gz3=[P47(3) G56(3) P48(3) P49(3);P35(3) G57(3) P50(3) P51(3);P39(3) G58(3) P52(3) P53(3);P43(3) G59(3) P54(3) P55(3)];
N=20;
t=(1:N)'/N;
p=(pi/2)*t;
T=[p.^0 sin(p) (sin(p).^2) (sin(p).^3) cos(p) (cos(p).^2) (cos(p).^3)];
A=[1 0 0 1;
-(B1+2) (2+B1) 0 0;
((2*B1)+1) -(2+2*B1) 0 0;
-B1 B1 0 0;
0 0 2+B2 -(B2+2);
0 0 -((2*B2)+2) ((2*B2)+1);
0 0 B2 -B2];
TT=transpose(T);
AA=transpose(A);
z1 = T*A*Gx*AA*TT;
z2 = T*A*Gy*AA*TT;
z3 = T*A*Gz*AA*TT;
z4 = T*A*Gx1*AA*TT;
z5 = T*A*Gy1*AA*TT;
z6 = T*A*Gz1*AA*TT;
z7 = T*A*Gx2*AA*TT;
z8 = T*A*Gy2*AA*TT;
z9 = T*A*Gz2*AA*TT;
z10 = T*A*Gx3*AA*TT;
z11 = T*A*Gy3*AA*TT;
z12 = T*A*Gz3*AA*TT;
X = [z1 z4];
Y = [z2 z5];
Z = [z3 z6];
X1 =[z4 z1];
Y1 =[z5 z2];
Z1 =[z6 z3];
X2 = [z7 z10];
Y2 = [z8 z11];
Z2 = [z9 z12];
X3 =[z10 z7];
Y3 =[z11 z8];
Z3 =[z12 z9];
scatter3([P0(1),P1(1),P2(1),P3(1),P4(1),P5(1),P6(1),P7(1),P8(1),P9(1),P10(1),P11(1),P12(1),P13(1),P14(1),P15(1)],[P0(2),P1(2),P2(2),P3(2),P4(2),P5(2),P6(2),P7(2),P8(2),P9(2),P10(2),P11(2),P12(2),P13(2),P14(2),P15(2)],[P0(3),P1(3),P2(3),P3(3),P4(3),P5(3),P6(3),P7(3),P8(3),P9(3),P10(3),P11(3),P12(3),P13(3),P14(3),P15(3)],'filled','MarkerFaceColor',[1 0 0]);hold on
scatter3([P3(1),G17(1),P18(1),P19(1),P7(1),G21(1),P22(1),P23(1),P11(1),G25(1),P26(1),P27(1),P15(1),G29(1),P30(1),P31(1)],[P3(2),G17(2),P18(2),P19(2),P7(2),G21(2),P22(2),P23(2),P11(2),G25(2),P26(2),P27(2),P15(2),G29(2),P30(2),P31(2)],[P3(3),G17(3),P18(3),P19(3),P7(3),G21(3),P22(3),P23(3),P11(3),G25(3),P26(3),P27(3),P15(3),G29(3),P30(3),P31(3)],'filled','MarkerFaceColor',[1 0 0]);hold on
surf(X,Y,Z)
%surf(z1,z2,z3)
hold on;
surf(X1,Y1,Z1)
%surf(z7,z8,z9);
%hold on;
surf(X2,Y2,Z2);
hold on;
surf(X3,Y3,Z3);
hold on;
0 Comments
Answers (0)
See Also
Categories
Find more on Point Cloud Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!