# What is the function to plot a rotating 3-D ellipsoid

22 views (last 30 days)
James Timana on 28 Oct 2011
I want to make a rotating ellips using mathematical equations on matlab, i must also be able to control rotating speed and direrection

Amith Kamath on 29 Oct 2011
Edited: Randy Souza on 11 Sep 2013
function [] = visualizeDTrot(C,M,speed,Dir,time)
%%C: the covariance matrix.
%%Dir: direction of the estimate, to be plotted together with the DT ellipsoid.
%%M: the mean vector, usually 0 in case of DT.
%%speed: time to pause between plotting, lowervalue = faster.
%%Dir: 1 or -1 for clockwise, anticlockwise.
%%time: number of iterations for which rotation is needed, higher = longer.
%%example: visualizeDTrot(diag([17 2 2]),[0 0 0],0.4,1,100)
[U,L] = eig(C);
% For N standard deviations spread of data, the radii of the eliipsoid will
% be given by N*SQRT(eigenvalues).
N = 1; % choose your own N
% generate data for "unrotated" ellipsoid
% rotate data with orientation matrix U and center M
a = kron(U(:,1),xc); b = kron(U(:,2),yc); c = kron(U(:,3),zc);
data = a+b+c; n = size(data,2);
x = data(1:n,:)+M(1); y = data(n+1:2*n,:)+M(2); z = data(2*n+1:end,:)+M(3);
% now plot the rotated ellipse
if Dir == 1
i = 1:time;
else
i = time:-1:1;
end
for j = i
sc = mesh(x,y,z);
colormap copper
zdir = [1 0 0];
axis equal
rotate(sc,zdir,j)
pause(speed)
title('actual ellipsoid represented by data: C and M')
axis equal
xlabel('x axis ---->')
ylabel('y axis ---->')
zlabel('z axis ---->')
alpha(0.5)
end
%%This should do the job!