Curve (Spiral) Based on Changing Radius

I see plenty of solutions for plotting spirals/curves based on an angle, but is there a way to plot a curve based on a changing radius? For example, the distance between the point that is "tracing" and the point it is tracing around starts at 20 meters, but decreases to 0 meters over 1 second then increases back to 20 meters over 1 second. The point is rotating at pi/2 rad/s, so it should complete 180-deg in the 2 seconds. I have no idea what this would look like, which is why I am trying to plot it.

 Respuesta aceptada

Star Strider
Star Strider el 18 de Jul. de 2015
This seems to me to work, although it’s difficult to appreciate the radius effect with only a half-turn of the helix:
t = linspace(0, 2, 500);
wt = (t/2)*pi/2;
radius = cos(2*pi*t/max(t)) * 20;
c = @(r,th) [r.*cos(th); r.*sin(th)];
curve = c(radius,wt)+1;
figure(1)
plot3(curve(1,:), curve(2,:), t)
grid on
xlabel('x')
ylabel('y')
zlabel('t')
figure(2)
plot(t, curve(1,:), t, curve(2,:), t,radius)
grid
title('Components Of ‘plot3’ Plot')
legend('x = cos', 'y = sin', 'radius', 'Location','N')

4 comentarios

Paul Huter
Paul Huter el 18 de Jul. de 2015
Thank you, this helps a lot.
Star Strider
Star Strider el 18 de Jul. de 2015
As always, my pleasure.
Why did you use:
wt = (t/2)*pi/2;
? Why not just "t"?
My error. You want ‘wt’ to go from 0 to pi, and ‘t’ goes from 0 to 2, so it should have been:
wt = (t/2)*pi;
radius = (0.5*cos(2*pi*t/max(t)) + 0.5) * 20;
For some reason, I was thinking pi/2.
The rest of the code works without modification.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 2-D and 3-D Plots en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 18 de Jul. de 2015

Comentada:

el 18 de Jul. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by