why are my surfaces not connected?

1 回表示 (過去 30 日間)
NurFadhilah Samsuddin
NurFadhilah Samsuddin 2020 年 12 月 10 日
i used the following coding to plot the surfaces as shown below but why are my surfaces not connected although i used the end line of the first surface as the first line of my second surface?
clc
clear all
close all
%control point for first surface
P0 = [0 0 0]; P1 = [1 0 0]; P2 = [2 0 0]; P3 = [3 0 0];
P4 = [0 1 0]; P5 = [1 1 2]; P6 = [2 1 2]; P7 = [3 1 0];
P8 = [0 2 0]; P9 = [1 2 2]; P10 = [2 2 2]; P11 = [3 2 0];
P12 = [0 3 0]; P13 = [1 3 0]; P14 = [2 3 0]; P15 = [3 3 0];
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 = [5 0 0]; P19 = [6 0 0];
P7; G21; P22 = [5 1 0]; P23 = [6 1 0];
P11; G25; P26 = [5 2 0]; P27 = [6 2 0];
P15; G29; P30 = [5 3 0]; P31 = [6 3 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)];
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;
surf(z1,z2,z3);
hold on;
surf(z4,z5,z6);
hold on;

採用された回答

KSSV
KSSV 2020 年 12 月 10 日
編集済み: KSSV 2020 年 12 月 10 日
You have to merge them. As of now they are two independent surfaces. Do the below:
X = [z1 z4] ;
Y = [z2 z5] ;
Z = [z3 z6] ;
surf(X,Y,Z)
  1 件のコメント
NurFadhilah Samsuddin
NurFadhilah Samsuddin 2020 年 12 月 14 日
i tried and it works! thank you!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangePolygons についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by