2 views (last 30 days)

Show older comments

The code below plots a spherical helix.

What I want is another spherical helix plotted on top but rotated 90deg about the z axis (different colors are to be used for the second helix)

% Set the Order #

Order = 5;

% Set 3D attributes

t = 0:0.01:Order*pi;

% set x, y and z curves

%positive half

xp = sin(-t/Order).*cos(t);

yp = sin(t/Order).*sin(t);

zp = cos(t/Order);

%Negative Half

xn = sin(t/Order).*cos(t);

yn = sin(-t/Order).*sin(t);

zn = cos(t/Order);

% Set figure number

figure(Order);

% Plot all curves as defined

plot3(xp, yp, zp, xn, yn, zn);

% Label 3D axis

xlabel('X');

ylabel('Y');

zlabel('Z');

Scott MacKenzie
on 5 Aug 2021

Edited: Scott MacKenzie
on 6 Aug 2021

For a before-and-after comparision, substitute the following for the plot3 line in your code. The z-axis rotation isn't particularly obvious, but look carefully and I think this is what you are after.

tiledlayout(1,2);

nexttile; % plot on left

% this is what the code in the question generates

plot3(xp, yp, zp, xn, yn, zn);

nexttile; % plot on right

% plot 1st curve as is

plot3(xp, yp, zp);

hold on;

% plot 2nd curve with 90 degrees rotation about z-axis

h = plot3(xn, yn, zn);

rotate(h, [0 0 1], 90);

or perhaps...

tiledlayout(1,2);

nexttile;

% this is what the code in the question generates

plot3(xp, yp, zp, xn, yn, zn);

nexttile;

% plot the two curves in separate colors with 2nd curve rotated

plot3(xp, yp, zp, 'b', xn, yn, zn, 'b');

hold on;

h = plot3(xp, yp, zp, 'm', xn, yn, zn, 'm');

rotate(h, [0 0 1], 90);

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

Start Hunting!