How do I plot a sphere along an elliptical path

4 visualizaciones (últimos 30 días)
Mahmoud
Mahmoud el 4 de Dic. de 2013
Comentada: Walter Roberson el 4 de Dic. de 2013
Hi all,
I am trying to plot a spherical object along an elliptical path, I found this code that plots the path, but I need to get the sphere to move along this path
ellipse = fncmb(circle,[2 0;0 1]);
s45 = 1/sqrt(2);
rtellipse = fncmb(fncmb(ellipse, [s45 -s45;s45 s45]), [1;1] );
hold on, fnplt(rtellipse), hold off
Regards,
Jobe
  4 comentarios
Walter Roberson
Walter Roberson el 4 de Dic. de 2013
The code you show doesn't really rotate the sphere: it rotates the viewpoint leaving the sphere fixed in place. My guess is that you will want to keep your viewpoint in place and have the object move within the fixed view, right?
Mahmoud
Mahmoud el 4 de Dic. de 2013
Exactly Walter!
I want the sphere to be rotating, while the viewpoint remains constant.

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 4 de Dic. de 2013
Have a look at hgtransform()

Más respuestas (1)

Mahmoud
Mahmoud el 4 de Dic. de 2013
Editada: Walter Roberson el 4 de Dic. de 2013
Thank you,
But I still have a little problem, I used the tutorial and inserted the code for a sphere into it, but the sphere is not rotating. This is the code:
Create an axes and adjust the view.
Set the axes limits to prevent auto limit selection during scaling
ax = axes('XLim',[-1.5 1.5],'YLim',[-1.5 1.5],...
'ZLim',[-1.5 1.5]);
view(3); grid on; axis equal
load topo;
[x, y, z] = sphere;
s = surface(x,y,z,'facecolor','texturemap','cdata',topo);
axis off
set (gcf,'color','k')
%%Create an hgtransform object and parent the surface objects to it.
%%The figure should not change from the image above.
t = hgtransform('Parent',ax);
% set(h,'Parent',t)
%%Select a renderer and show the objects.
set(gcf,'Renderer','opengl')
drawnow
%%Initialize the rotation and scaling matrix to the identity matrix (eye).
%%Again, the image should not change.
Rz = eye(4);
Sxy = Rz;
%%Form the z-axis rotation matrix and the scaling matrix.
%%Rotate 360 degrees (2*pi radians) and scale by using the increasing values of r.
for r = 1:.1:2*pi
% Z-axis rotation matrix
Rz = makehgtform('zrotate',r);
% Scaling matrix
Sxy = makehgtform('scale',r/4);
% Concatenate the transforms and
% set the hgtransform Matrix property
set(t,'Matrix',Rz*Sxy)
drawnow
end
pause(1)
  1 comentario
Walter Roberson
Walter Roberson el 4 de Dic. de 2013
You probably don't want the scaling portion going on, just
Rz = makehgtform('zrotate',r);
set(t, 'Matrix', Rz);
drawnow()
I am not sure at the moment why the rotation might not be happening. Are you seeing the scaling going on? With the code you have, is the sphere growing over time?

Iniciar sesión para comentar.

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by