How can i pass S-curve through the center of a circle ??
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
hello coders, i need help for which i shall remain tahnkful.
I have an S-curve which i want to pass through the centers of the ellipse and circle ??
can any one guide me !! Please... the code is attached below.... thankyou
t1 = (0:pi/100:pi); % Top curve 0 to 180 deg
t2 = (-pi:pi/100:0); % Bottom curve 180 to -180 deg
%%% ellipse %%%
xxCenter = 0*0.001;
yyCenter = -90*0.001;
xxRadius = 100*0.001;
yyRadius = 10*0.001;
zzCenter = 0*0.001;
zzRadius = 0*0.001;
xx = (xxRadius * cos(t1) + xxCenter).';
yy = (yyRadius * sin(t1) + yyCenter).';
zz = (zzRadius * sin(t1) + zzCenter).';
theta1 = 0:0.01:pi;
xx1Center = 0*0.001;
yy1Center = -90*0.001;
xx1Radius = 100*0.001;
yy1Radius = 61*0.001;
zz1Center = 0*0.001;
zz1Radius = 0*0.001;
xx1 = (xx1Radius * cos(-t1) + xx1Center).';
yy1 = (yy1Radius * sin(-t1) + yy1Center).';
zz1 = (zz1Radius * sin(-t1) + zz1Center).';
%%% Circle %%%
semimajright6 = 142*0.001; %%% semi major axis %%% width, x-axis
semimajleft6 = 142*0.001; %%% semi major axis %%% width, x-axis
semiminup6 = 142*0.001; %%% semi minor axis %%% height, y-axis
semimindown6 = 142*0.001; %%% semi minor axis %%% height, y-axis
n1st6up = 0;%%% controls the slope %%%
m1st6up = 0; %%% controls the slope %%%
n1st6down = 0; %%% controls the slope %%%
m1st6down = 0; %%% controls the slope %%%
x6up = zeros(length(t1),length(n1st6up));
y6up = x6up;
z6up = x6up*0+1400*0.001;
leg6up = cell(length(n1st6up),1);
x6down = zeros(length(t2),length(n1st6down));
y6down = x6down;
z6down = x6down*0+1400*0.001;
leg6down = cell(length(n1st6down),1);
for i=1:length(n1st6up)
x6up(:,i) = sign(cos(t1)).*semimajright6.*abs(cos(t1));
y6up(:,i) = sign(sin(t1)).*semiminup6.*abs(sin(t1));
leg(i) = {['n1st6up = ',num2str(n1st6up(i))]};
end
for i=1:length(n1st6down)
x6down(:,i) = sign(cos(t2)).*semimajleft6.*abs(cos(t2));
y6down(:,i) = sign(sin(t2)).*semimindown6.*abs(sin(t2));
leg(i) = {['n1st6down = ',num2str(n1st6down(i))]};
end
%%% S-Curve %%%
x = 0:0.01:1.4;
y = smf(x,[0 1.4]);
% plot(x,y)
% hold on
%%% Plot %%%
% grid on
% hold on
% axis equal
% set(gcf,'color','white')
% xlabel('X-axis','fontweight','bold','fontsize',10)
% ylabel('Y-axis','fontweight','bold','fontsize',10)
% zlabel('Z-axis','fontweight','bold','fontsize',10)
% hold on
% plot3(zz,xx,yy,'r',zz1,xx1,yy1,'r', z6up,x6up,y6up+(0.350),'r',z6down,x6down,y6down+(0.350),'r','linewidth',2)
%% ------- Code added by Sam Chak -------
plot3(zz, xx, yy, 'r'), hold on
plot3(zz1, xx1, yy1, 'r')
plot3(z6up, x6up, y6up+(0.350), 'r')
plot3(z6down, x6down, y6down+(0.350), 'r')
plot(x, y, 'color', "#0072BD"), hold off
axis equal, grid on
2 commentaires
Sam Chak
le 2 Avr 2024
I made some modifications to the code by commenting out certain lines and adding a few lines to display the figure. Could you please review and confirm if the 3D line plot is correctly displayed as intended? This will greatly assist users in visualizing your desired outcome.
Réponse acceptée
Sam Chak
le 2 Avr 2024
Check if the following is the desired 3D line plot?
t1 = (0:pi/100:pi); % Top curve 0 to 180 deg
t2 = (-pi:pi/100:0); % Bottom curve 180 to -180 deg
%%% ellipse %%%
xxCenter = 0*0.001;
yyCenter = -90*0.001;
xxRadius = 100*0.001;
yyRadius = 10*0.001;
zzCenter = 0*0.001;
zzRadius = 0*0.001;
xx = (xxRadius * cos(t1) + xxCenter).';
yy = (yyRadius * sin(t1) + yyCenter).';
zz = (zzRadius * sin(t1) + zzCenter).';
theta1 = 0:0.01:pi;
xx1Center = 0*0.001;
yy1Center = -90*0.001;
xx1Radius = 100*0.001;
yy1Radius = 61*0.001;
zz1Center = 0*0.001;
zz1Radius = 0*0.001;
xx1 = (xx1Radius * cos(-t1) + xx1Center).';
yy1 = (yy1Radius * sin(-t1) + yy1Center).';
zz1 = (zz1Radius * sin(-t1) + zz1Center).';
%%% Circle %%%
semimajright6 = 142*0.001; %%% semi major axis %%% width, x-axis
semimajleft6 = 142*0.001; %%% semi major axis %%% width, x-axis
semiminup6 = 142*0.001; %%% semi minor axis %%% height, y-axis
semimindown6 = 142*0.001; %%% semi minor axis %%% height, y-axis
n1st6up = 0;%%% controls the slope %%%
m1st6up = 0; %%% controls the slope %%%
n1st6down = 0; %%% controls the slope %%%
m1st6down = 0; %%% controls the slope %%%
x6up = zeros(length(t1),length(n1st6up));
y6up = x6up;
z6up = x6up*0+1400*0.001;
leg6up = cell(length(n1st6up),1);
x6down = zeros(length(t2),length(n1st6down));
y6down = x6down;
z6down = x6down*0+1400*0.001;
leg6down = cell(length(n1st6down),1);
for i=1:length(n1st6up)
x6up(:,i) = sign(cos(t1)).*semimajright6.*abs(cos(t1));
y6up(:,i) = sign(sin(t1)).*semiminup6.*abs(sin(t1));
leg(i) = {['n1st6up = ',num2str(n1st6up(i))]};
end
for i=1:length(n1st6down)
x6down(:,i) = sign(cos(t2)).*semimajleft6.*abs(cos(t2));
y6down(:,i) = sign(sin(t2)).*semimindown6.*abs(sin(t2));
leg(i) = {['n1st6down = ',num2str(n1st6down(i))]};
end
%%% S-Curve (plotting on X–Z plane) %%%
x = 0:0.01:1.4; % no change
y = zeros(1, numel(x)); % a bunch of zeros
CcenterZ = 0.35; % center of circle on Z-axis
EcenterZ = -0.10; % center of ellipse on Z-axis
z = (CcenterZ - EcenterZ)*smf(x,[0 1.4]) + EcenterZ; % rescale the S-curve
%%% Plot %%%
%% ------- Code added by Sam Chak -------
plot3(zz, xx, yy, 'r'), hold on
plot3(zz1, xx1, yy1, 'r')
plot3(z6up, x6up, y6up+(0.350), 'r')
plot3(z6down, x6down, y6down+(0.350), 'r')
plot3(x, y, z, 'color', "#0072BD", 'linewidth', 2), hold off
axis equal, grid on, view(-65, 10)
xlabel x, ylabel y, zlabel z
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Live Scripts and Functions dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!