Ich habe ein Problem. Ich habe derzeit Daten für eine 3D-Oberfläche, die eine komplizierte trigonometrische Funktion f (rho1, Rho2, beta) = 0. ich diese Daten isosurface wie so erhalten unter Verwendung von beschreibt:Erhalten Isoflächengrenze mit Contourslice?
[rho1,rho2,beta] = meshgrid(linspace(pi,0,100),linspace(0,pi,100),linspace(0,pi/2,100));
data = sin(rho1).*sin(rho2) + sin(beta).^3 + cos(2.*beta).*sin(beta).*cos(rho2) + sin(beta).^3.*cos(rho1).*cos(rho2).^2 + cos(2.*beta).*sin(beta).*cos(rho1).*cos(rho2) - cos(beta).^2.*sin(beta).*cos(rho1) + sin(beta).*cos(rho1).*sin(rho2).^2 + 2.*cos(beta).^2.*sin(rho1).*sin(rho2) + cos(beta).^2.*sin(beta).*cos(rho2).^2 + 2.*sin(beta).^2.*cos(rho2).*sin(rho1).*sin(rho2);
fv = isosurface(rho1,rho2,beta,data,0);
p = patch(fv);
isonormals(rho1,rho2,beta,data,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';
daspect([1,1,1])
view(3); axis tight
camlight
lighting gouraud
Ich versuche, zu zeichnen, in 3D, mehrere "Scheiben" dieser Oberfläche. Momentan benutze ich contourslice. Ich verstehe, dass diese Funktion Konturen basierend auf der volumetrischen Darstellung meiner Oberfläche interpoliert. Ich möchte, dass die Konturen genau (oder so nah wie möglich) an der Grenze meines Volumens liegen. Ich habe derzeit dies:
das ist ein z Scheibe bei Pi/4 mit der "nächsten" Interpolationsmethode. Das gibt mir nicht, was ich will.
ist jede Hilfe sehr dankbar ...
this image shows how the contour does not match my surface