Hello, I have plotted ellipsoids using 'surf' command at some fixed points. It looks like solid. But i want to see three axis of it as shown in figure attached. Please suggest.

 Respuesta aceptada

Bruno Luong
Bruno Luong el 26 de Ag. de 2019
Editada: Bruno Luong el 26 de Ag. de 2019
[Q,~] = qr(randn(3));
h = rand(3,1);
h1 = h(1);
h2 = h(2);
h3 = h(3);
% If your principal axis are (3x1) P1, P2, P3 and half length are (scalars) h1, h2, h3
% Q = [P1(:), P2(:), P3(:)];
Q = Q .* ([h1, h2, h3]./sqrt(sum(Q.^2,1)));
n = 21;
[x,y,z]=sphere(n);
xyz = Q*[x(:) y(:) z(:)]';
x = reshape(xyz(1,:),[n n]+1);
y = reshape(xyz(2,:),[n n]+1);
z = reshape(xyz(3,:),[n n]+1);
close all
hold on
surf(x,y,z,'EdgeColor',0.6+[0 0 0],'FaceColor','none');
for k=1:3
plot3([0 Q(1,k)],[0 Q(2,k)],[0 Q(3,k)],'r','LineWidth',2);
end
axis equal
This is a slight modification of my answer in this thread

3 comentarios

Vikas Saroha
Vikas Saroha el 26 de Ag. de 2019
An error is displayed during execution of command as mentioned below: ,
Q = Q .* ([h1, h2, h3]./sqrt(sum(Q.^2,1)));
Plese modify it.
Error occuring or not depends on your MATLAB version, this command is correct for R2016b and later.
If you use previous you should replace with
Q = bsxfun(@times, Q, ([h1, h2, h3]./sqrt(sum(Q.^2,1))))
Vikas Saroha
Vikas Saroha el 26 de Ag. de 2019
thanks for your prompt reply. Its working.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Preguntada:

el 26 de Ag. de 2019

Comentada:

el 26 de Ag. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by