Plotting two Spherical helix on top of each other with one being 90 deg shifted rotated about the z axis

8 visualizzazioni (ultimi 30 giorni)
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');

Risposta accettata

Scott MacKenzie
Scott MacKenzie il 5 Ago 2021
Modificato: Scott MacKenzie il 6 Ago 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);
  3 Commenti
Scott MacKenzie
Scott MacKenzie il 6 Ago 2021
@William Black, you're welcome. Glad to help.
BTW, does my answer actually create the graph you want? I was thinking after posting it, that perhaps you wanted the entire two-curve helix to be replicated with rotation added, and with a distinct color for each helix. I just added some additional code to that effect, just in case. Again, good luck.
William Black
William Black il 6 Ago 2021
No, LOL. Your originally suggested code did not create the visual I needed. But using your technique, I was able to modify my code appropriately.
I was actually looking for a way to modify the equations to produce the phase shift initially, negating the need to visually rotate the image. I will continue to explore this approach. If you have any suggestions, I would be most appreciative.
But your new edited solution as shown above does indeed produce the desired visual.
I'm just beginning to learn the MatLab commands, syntax and, ultimately, realize its potential regarding my work...I may have more questions in the future after become more intrepid.
Thanks again!

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by