当前位置: 首页 > 程序语言 >求助想用mathematica画一个缺一部分的实心球体

求助想用mathematica画一个缺一部分的实心球体

作者 零度温馨
来源: 小木虫 500 10 举报帖子
+关注

想用mathematica画一个缺一部分的实心球体,在球坐标下的表达式是1< r<2,    0<th<1.5Pi,    0<Phi<0.5Pi,  画出来效果应该是一个中空的缺八分之一的实心球体。。。。试了半天只能画出球面画不出实心的。。求助啊!或者matlab能实现也行。。。
新人,金币不多 返回小木虫查看更多

今日热帖
  • 精华评论
  • Yan_Jordan

    我试着画了下,发现直接三维好像挺麻烦的,于是用了拼接面的方法,你可以参考下!
    基本是画两个球面,一个底面加两个侧面,代码如下

    CODE:
    clc
    clear
    close all
    %两个球面
    r1=1;
    r2=2;
    t=linspace(0,0.5*pi,25);
    p=linspace(0,1.5*pi,25);
    [theta,phi]=meshgrid(t,p);
    x1=r1*sin(theta).*sin(phi);
    y1=r1*sin(theta).*cos(phi);
    z1=r1*cos(theta);
    x2=r2*sin(theta).*sin(phi);
    y2=r2*sin(theta).*cos(phi);
    z2=r2*cos(theta); %
    [m,n]=size(z1);
    re=[0 0 1];%改数字 改变颜色、数字为0-1
    colormap(re)
    surf(x1,y1,z1);
    hold on
    surf(x2,y2,z2);
    %底面
    R=linspace(0,r2,25);
    [r,ang]=meshgrid(R,p);
    x3=r.*sin(ang);
    y3=r.*cos(ang);
    z3=zeros(25,25);
    surf(x3,y3,z3);
    %侧面
    R1=linspace(0,r2,25);
    [r,ang]=meshgrid(R1,t);
    y4=r.*sin(ang);
    z4=r.*cos(ang);
    x4=zeros(25,25);
    surf(x4,y4,z4);
    R2=linspace(0,r2,25);
    [r,ang]=meshgrid(R2,-t);
    x5=r.*sin(ang);
    z5=r.*cos(ang);
    y5=zeros(25,25);
    surf(x5,y5,z5);
    shading interp
    axis equal;
    daspect([1,1,1])
    view(3);
    axis tight
    camlight
    grid on
    lighting gouraud

    其中很多参数你可以自己调整,大体思路是这样。

    求助想用mathematica画一个缺一部分的实心球体
    结果.JPG

  • zhangdegen

    RegionPlot3D[ 1 <= x^2 + y^2 + z^2 <= 4, {x, 0, 2}, {y, 0, 2}, {z, 0, 2}]
    求助想用mathematica画一个缺一部分的实心球体-1
    Untitled-3.jpg

  • Mr__Right

    引用回帖:
    3楼: Originally posted by zhangdegen at 2017-06-28 15:49:36
    RegionPlot3D

    Untitled-3.jpg

    估计图片应该是类似

    求助想用mathematica画一个缺一部分的实心球体-2
    CODE:
    2 > Sqrt[x^2 + y^2 + z^2] > 1 && (3 \[Pi])/2 > ArcTan[z, Sqrt[x^2 + y^2]] > 0 && \[Pi]/2 > ArcTan[x, y] >  0

    那么是:
    http://blog.csdn.net/stereohomology/article/details/73905623

  • 零度温馨

    引用回帖:
    2楼: Originally posted by Yan_Jordan at 2017-06-28 15:13:35
    我试着画了下,发现直接三维好像挺麻烦的,于是用了拼接面的方法,你可以参考下!
    基本是画两个球面,一个底面加两个侧面,代码如下
    clc
    clear
    close all
    %两个球面
    r1=1;
    r2=2;
    t=linspace(0,0.5*pi ...

    非常感谢,程序比我想象中繁琐,和我想要的图形类似,不过楼主发的结果图中并没有中间球形空心的地方,我先去运行下试试!

  • 零度温馨

    引用回帖:
    3楼: Originally posted by zhangdegen at 2017-06-28 15:49:36
    RegionPlot3D

    Untitled-3.jpg

    楼主你好,你所用的函数好像最多只能的到你给的结果图的图片,其实我想要的是一个完整的空心球正好缺少你给的那一块,类似这种,紫色部分为表示内部空心
    求助想用mathematica画一个缺一部分的实心球体-3
    无标题.jpg

  • 零度温馨

    引用回帖:
    4楼: Originally posted by Mr__Right at 2017-06-28 21:25:13
    估计图片应该是类似



    2 > Sqrt > 1 && (3 \)/2 > ArcTan > 0 && \/2 > ArcTan >  0...

    楼主给的代码是要和楼上的RegionPlot3D函数结合起来用吗?我咋还是画不出想要的效果图
    求助想用mathematica画一个缺一部分的实心球体-4
    Untitled4.png

  • cooooldog

    问问题应该把问题本身描述清楚
    比如,具体哪种
    求助想用mathematica画一个缺一部分的实心球体-5

    CODE:
    RegionPlot3D[1<=Sqrt[x^2+y^2+z^2]<=2
    &&((0<ArcTan[z,Sqrt[x^2+y^2]]<\[Pi]&&(0<ArcTan[x,y]<\[Pi]
    ||0<ArcTan[-x,-y]<\[Pi]/2))
    ||(0<ArcTan[-z,Sqrt[x^2+y^2]]<\[Pi]/2&&0<ArcTan[x,-y]<\[Pi]/2)),
    {x,-2,2},{y,-2,2},{z,-2,2},PlotPoints->160,Mesh->None,Boxed->False,Axes->False,PlotTheme->"Classic"]

    求助想用mathematica画一个缺一部分的实心球体-6

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓