【问题标题】:Matlab Sphere plot without using the Sphere Function不使用球面函数的 Matlab 球面图
【发布时间】:2016-06-27 18:24:45
【问题描述】:

我试图在 Matlab 中绘制一个球体而不使用球体函数。这是我的代码:

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));

上面的代码确实生成了方程 r^2=x^2+y^2+z^2 的球体。唯一的问题是有一个水平面切割球体。

我的问题是如何绘制一个不显示水平面的球体?

我不使用 Sphere 函数的原因是我想绘制一个曲面方程。如果我使用 Sphere 函数,则 Matlab 假定我的表面将是一个球体。

【问题讨论】:

  • 只需松开 sqrt... 并适当缩放

标签: matlab


【解决方案1】:

您应该考虑切换到极坐标。 MATLAB 可以绘制拓扑等效于矩形网格的曲面:

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

诀窍是在极坐标中你有一个矩形网格。

正如您在上面的公式中看到的,在这个约定中,theta 是极角,phi 是方位角,这在数学和物理学中很常见。您可以使用sph2cart 进行从球面坐标到笛卡尔坐标的转换,但是您需要输入角度的方位角和仰角,它们的定义略有不同。

【讨论】:

  • @JohnDoe 作为记录,MATLAB 有惊人的帮助和在线文档,请参阅 help axisdoc axis :) axis vis3d 强制轴具有固定的 1:1:1 单位比例为了获得不失真的 3d 对象图。
【解决方案2】:

当然有更好的情节......但如果你只是将 z 矩阵中的条目设置为 nan,它就可以工作:

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

或者您可以使用隐式 3D 绘图。在 matlab 文件交换中,您可以找到相应的函数 (Matlab File Excahnge) 相应的脚本如下所示:

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

【讨论】:

    【解决方案3】:

    我是新来的,但我确实为 matlab 做了一些,但没有使用球体函数 虽然使用 fmesh 将球体分成 2 部分,并使用 2 个函数绘制一个正值和一个负值

    我展示了一个功能的示例

    f=@(x,y) sqrt(3 - (sqrt(3).*(x-4)).^2 -  (sqrt(3).*(y-2)).^2)-5
                  ^                ^                              ^
    radius of the sphere    position on x axis            position on z axis
    

    完整代码

    f=@(x,y) sqrt(3 - (sqrt(3).*(x-4)).^2 -  (sqrt(3).*(y-2)).^2)-5
    fmesh(f,[-10 10 -10 10],'ShowContours','on')
    
    hold
    
    f1=@(x,y) -sqrt(3 -  (sqrt(3).*(x-4)).^2 -  (sqrt(3).*(y-2)).^2)-5
    fmesh(f1,[-10 10 -10 10],'ShowContours','on')
    
    hold off
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2015-10-17
      • 2017-11-19
      相关资源
      最近更新 更多