How do I plot a sphere along an elliptical path

2 views (last 30 days)
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 Comments
Walter Roberson
Walter Roberson on 4 Dec 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 on 4 Dec 2013
Exactly Walter!
I want the sphere to be rotating, while the viewpoint remains constant.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 4 Dec 2013
Have a look at hgtransform()

More Answers (1)

Mahmoud
Mahmoud on 4 Dec 2013
Edited: Walter Roberson on 4 Dec 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 Comment
Walter Roberson
Walter Roberson on 4 Dec 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?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!