2016-06-27 11 views
2

Ich versuche, eine Sphäre in Matlab zu zeichnen, ohne die Sphere-Funktion zu verwenden. Dies ist mein Code:Matlab Sphere-Plot ohne Verwendung der Sphere-Funktion

r = 2; 
[ x,y ] = meshgrid(-4:0.1:4); 
z = sqrt(r^2-x.^2-y.^2); 
mesh(real(z)); 
hold on 
mesh(real(-z)); 

Der obige Code hat eine Sphäre der Gleichung r erzeugen^2 = x^2 + y^2 + z^2. Das einzige Problem ist, dass eine horizontale Ebene die Kugel schneidet.

Meine Frage ist, wie kann ich eine Kugel plotten, die nicht die horizontale Ebene zeigt?

Der Grund, warum ich keine Sphere-Funktion verwende, ist, dass ich eine Oberflächengleichung aufzeichnen möchte. Wenn ich die Sphere-Funktion verwende, nimmt Matlab an, dass meine Oberfläche eine Kugel sein wird.

+0

nur verlieren die sqrt ... und skalieren entsprechend – bla

Antwort

0

Nun hat es sicherlich schöneres Plots gewesen ... aber es funktioniert, wenn Sie nur den Eintrag in der z-Matrix nan gesetzt:

temp = real(z); 
temp(temp==0) = nan; 

Oder Sie können mit einem impliziten 3D-Plot gehen. In Matlab Dateiaustausch können Sie eine entsprechende Funktion (Matlab File Excahnge) Das entsprechende Skript aussehen würde wie diese finden:

f = 'x^2 +y^2 +z^2 -4'; 
ezimplot3(f,[-5 5]) 
1

sollten Sie prüfen, in Polarkoordinaten umgeschaltet wird. MATLAB können Oberflächen Parzelle, die topologisch äquivalent zu einem rechteckigen Maschen sind:

N = 20; 
thetavec = linspace(0,pi,N); 
phivec = linspace(0,2*pi,2*N); 
[th, ph] = meshgrid(thetavec,phivec); 
R = ones(size(th)); % should be your R(theta,phi) surface in general 

x = R.*sin(th).*cos(ph); 
y = R.*sin(th).*sin(ph); 
z = R.*cos(th); 

figure; 
surf(x,y,z); 
axis vis3d 

result

Der Trick besteht darin, dass in Polarkoordinaten man ein rechteckiges Maschen haben.

Wie Sie in den obigen Formeln sehen können, ist in dieser Konvention theta der Polarwinkel und phi ist der Azimutwinkel, wie es in Mathematik und Physik üblich ist. Sie können sph2cart verwenden, um die Transformation von sphärischen zu kartesischen Koordinaten durchzuführen, aber dann müssen Sie Azimut und Elevation für die Winkel eingeben, die ein wenig unterschiedliche Definitionen haben.

Verwandte Themen