3D plot an ellipsoid?

6 vues (au cours des 30 derniers jours)
Mat Ramada
Mat Ramada le 16 Nov 2017
hi, i'm making a code that will plot an ellipsoid with the following equations:
x = a * (cos*phi) * (cos * theta); y = b * (cos*phi) * (sin * theta); z = b * (sin*phi);
and i'm supposed to plot it with a = 2, and b = 1, but it doesn't appear to be working.. help anyone?
a = 2;
b = 1;
x = a * (cos*phi) * (cos * theta);
y = b * (cos*phi) * (sin * theta);
z = b * (sin*phi);
[Xm, Ym] = meshgrid(x,y);
surf(x,y,z)
  1 commentaire
Rik
Rik le 16 Nov 2017
phi and theta don't exist and you are using them as input to cos and sin.

Connectez-vous pour commenter.

Réponse acceptée

Akira Agata
Akira Agata le 17 Nov 2017
How about using a fsurf function, like:
a = 2;
b = 1;
funx = @(theta,phi) a*cos(theta).*cos(phi);
funy = @(theta,phi) b*cos(theta).*sin(phi);
funz = @(theta,phi) b*sin(theta);
fsurf(funx,funy,funz,[-pi/2 pi/2 -pi pi])
  4 commentaires
Akira Agata
Akira Agata le 29 Mai 2019
How about using hgtransform ? The following is an example.
a = 2;
b = 1;
funx = @(theta,phi) a*cos(theta).*cos(phi);
funy = @(theta,phi) b*cos(theta).*sin(phi);
funz = @(theta,phi) b*sin(theta);
% Make rotation matrix (e.g Rotate pi/4 [rad] for y-axis)
M = makehgtform('yrotate',pi/4);
figure
h = fsurf(funx,funy,funz,[-pi/2 pi/2 -pi pi]);
daspect([1 1 1])
% Apply the rotation matrix
t = hgtransform('Parent',gca);
t.Matrix = M;
h.Parent = t;
example.png
DOMENICO GIOFFRE
DOMENICO GIOFFRE le 23 Jan 2021
Hello. I have a 3x3 matrix describing a tilted ellypsoid. How can i plot this? Besides, is there a way to calculate the distance between its center and a point on the surface in the direction of x, y and z axes?
Thank you!
229.435 1.889 -5.708
1.889 207.544 4.372
-5.708 4.372 184.297
how can I rotate it 'back'

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by