等值面图(`isosurface`)

等值面图(isosurface)

06_极坐标与特殊 5 张 MATLAB R2023b 100 mm 宽 @ 300 dpi

这个方法适合什么

从三维体数据中提取等值面,得到真正的三维曲面。适合:电晕放电空间电场等值面、变压器内部温度等值面、三维场量的包络。

电气场景

1 电晕放电空间电场等值面

2 变压器内部温度等值面

3 电缆接头热场等值面

4 接地网土壤电位等值面

5 电机端部漏磁等值面

代码

脚本 p6_polar_special.m 中对应 isosurface 的一段,SEL 用于选择只跑某几个方法。

% ---- 8-1 电晕放电空间电场等值面 ----
try
    xg = linspace(-1,1,61); [X,Y,Z] = meshgrid(xg,xg,linspace(0,2,61));
    R  = sqrt(X.^2+Y.^2+(Z-0.15).^2);
    S  = 2.4*exp(-R.^2/0.10) + 0.55*exp(-((X-0.35).^2+(Y+0.2).^2+(Z-1.1).^2)/0.06);
    f = ml_fig(PP,100,90); ax = ax3(f,false);
    [F1,V1] = isosurface(X,Y,Z,S,3.2e-1);
    p1 = patch('Parent',ax,'Faces',F1,'Vertices',V1,'FaceColor',C(2,:), ...
               'EdgeColor','none','FaceAlpha',0.55,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p1);
    [F2,V2] = isosurface(X,Y,Z,S,1.05);
    p2 = patch('Parent',ax,'Faces',F2,'Vertices',V2,'FaceColor',C(1,:), ...
               'EdgeColor','none','FaceAlpha',0.85,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p2);
    [Fc,Vc] = isocaps(X,Y,Z,S,3.2e-1);
    patch('Parent',ax,'Faces',Fc,'Vertices',Vc,'FaceColor',C(3,:), ...
          'EdgeColor','none','FaceAlpha',0.45);
    try, camlight(ax,'headlight'); camlight(ax,50,25); catch, end
    lighting(ax,'gouraud');
    xlabel(ml_tx('站区 <i>x</i> / m')); ylabel(ml_tx('站区 <i>y</i> / m'));
    zlabel(ml_tx('高度 <i>z</i> / m'));
    xlim(ax,[-1 1]); ylim(ax,[-1 1]); zlim(ax,[0 2]);
    lgp(ax,PP,{'等值面 <i>E</i> = 1.05 kV/m','等值面 <i>E</i> = 0.32 kV/m'},'northeast');
    save_png(f,FIGD,'电晕放电空间电场等值面');
catch ME, fprintf('[FAIL] 8-1 %s\n',ME.message); close all; end

% ---- 8-2 变压器内部温度等值面 ----
try
    xg = linspace(0,2.0,61); yg = linspace(0,1.4,51); zg = linspace(0,2.6,61);
    [X,Y,Z] = meshgrid(xg,yg,zg);
    S = 42 + 26*exp(-(((X-0.95).^2)/0.14 + ((Y-0.62).^2)/0.22 + ((Z-1.35).^2)/0.30)) ...
           + 8*(1-Z/2.6).^1.4;
    f = ml_fig(PP,100,90); ax = ax3(f,false);
    [F1,V1] = isosurface(X,Y,Z,S,62);
    p1 = patch('Parent',ax,'Faces',F1,'Vertices',V1,'FaceColor',C(2,:), ...
               'EdgeColor','none','FaceAlpha',0.80,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p1);
    [F2,V2] = isosurface(X,Y,Z,S,52);
    p2 = patch('Parent',ax,'Faces',F2,'Vertices',V2,'FaceColor',C(3,:), ...
               'EdgeColor','none','FaceAlpha',0.45,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p2);
    [Fc,Vc] = isocaps(X,Y,Z,S,62);
    patch('Parent',ax,'Faces',Fc,'Vertices',Vc,'FaceColor',C(4,:), ...
          'EdgeColor','none','FaceAlpha',0.40);
    try, camlight(ax,'headlight'); camlight(ax,-40,35); catch, end
    lighting(ax,'gouraud');
    xlabel(ml_tx('油箱宽度 <i>x</i> / m')); ylabel(ml_tx('油箱深度 <i>y</i> / m'));
    zlabel(ml_tx('高度 <i>z</i> / m'));
    xlim(ax,[0 2]); ylim(ax,[0 1.4]); zlim(ax,[0 2.6]);
    lgp(ax,PP,{'等值面 <i>T</i> = 62 °C','等值面 <i>T</i> = 52 °C'},'northeast');
    save_png(f,FIGD,'变压器内部温度等值面');
catch ME, fprintf('[FAIL] 8-2 %s\n',ME.message); close all; end

% ---- 8-3 电缆接头热场等值面 ----
try
    xg = linspace(-0.10,0.10,51); zg = linspace(-0.25,0.25,61);
    [X,Y,Z] = meshgrid(xg,xg,zg);
    Rc = hypot(X,Y);
    S = 40 + 24*exp(-(Z.^2)/0.006).*exp(-((Rc-0.035).^2)/0.0016) ...
           + 6*exp(-((Z-0.12).^2)/0.004);
    f = ml_fig(PP,100,90); ax = ax3(f,false);
    view(ax,[-30 22]);
    [F1,V1] = isosurface(X,Y,Z,S,58);
    p1 = patch('Parent',ax,'Faces',F1,'Vertices',V1,'FaceColor',C(2,:), ...
               'EdgeColor','none','FaceAlpha',0.80,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p1);
    [F2,V2] = isosurface(X,Y,Z,S,48);
    p2 = patch('Parent',ax,'Faces',F2,'Vertices',V2,'FaceColor',C(6,:), ...
               'EdgeColor','none','FaceAlpha',0.40,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p2);
    try, camlight(ax,'headlight'); camlight(ax,60,20); catch, end
    lighting(ax,'gouraud');
    xlabel(ml_tx('径向 <i>x</i> / m')); ylabel(ml_tx('径向 <i>y</i> / m'));
    zlabel(ml_tx('轴向 <i>z</i> / m'));
    xlim(ax,[-0.10 0.10]); ylim(ax,[-0.10 0.10]); zlim(ax,[-0.25 0.25]);
    lgp(ax,PP,{'等值面 <i>T</i> = 58 °C','等值面 <i>T</i> = 48 °C'},'northeast');
    save_png(f,FIGD,'电缆接头热场等值面');
catch ME, fprintf('[FAIL] 8-3 %s\n',ME.message); close all; end

% ---- 8-4 接地网周围土壤电位等值面 ----
try
    xg = linspace(-40,40,61); yg = linspace(-40,40,61); zg = linspace(0,30,41);
    [X,Y,Z] = meshgrid(xg,yg,zg);
    Rxy = sqrt(X.^2+Y.^2);
    S = 3.2*exp(-Rxy/9).*exp(-Z/6) + 1.1*exp(-Rxy/22).*exp(-Z/16) ...
        + 0.45*exp(-(Z.^2)/9).*exp(-Rxy/30);
    f = ml_fig(PP,100,90); ax = ax3(f,false);
    [F1,V1] = isosurface(X,Y,Z,S,1.20);
    p1 = patch('Parent',ax,'Faces',F1,'Vertices',V1,'FaceColor',C(3,:), ...
               'EdgeColor','none','FaceAlpha',0.55,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p1);
    [F2,V2] = isosurface(X,Y,Z,S,0.42);
    p2 = patch('Parent',ax,'Faces',F2,'Vertices',V2,'FaceColor',C(4,:), ...
               'EdgeColor','none','FaceAlpha',0.35,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p2);
    try, camlight(ax,'headlight'); camlight(ax,35,30); catch, end
    lighting(ax,'gouraud');
    xlabel(ml_tx('距接地中心 <i>x</i> / m'));
    ylabel(ml_tx('距接地中心 <i>y</i> / m'));
    zlabel(ml_tx('深度 <i>z</i> / m'));
    xlim(ax,[-40 40]); ylim(ax,[-40 40]); zlim(ax,[0 30]);
    lgp(ax,PP,{'等值面 <i>U</i> = 1.20 kV','等值面 <i>U</i> = 0.42 kV'},'northeast');
    save_png(f,FIGD,'接地网土壤电位等值面');
catch ME, fprintf('[FAIL] 8-4 %s\n',ME.message); close all; end

% ---- 8-5 电机端部漏磁等值面 ----
try
    xg = linspace(-0.20,0.20,51); yg = linspace(-0.20,0.20,51); zg = linspace(0,0.30,51);
    [X,Y,Z] = meshgrid(xg,yg,zg);
    Rt = sqrt(X.^2+Y.^2);
    S = 42*exp(-((Rt-0.13).^2)/0.010).*exp(-Z/0.16) ...
        + 12*exp(-((Rt-0.05).^2)/0.004).*exp(-((Z-0.06).^2)/0.010);
    f = ml_fig(PP,100,90); ax = ax3(f,false);
    [F1,V1] = isosurface(X,Y,Z,S,18);
    p1 = patch('Parent',ax,'Faces',F1,'Vertices',V1,'FaceColor',C(1,:), ...
               'EdgeColor','none','FaceAlpha',0.45,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p1);
    [F2,V2] = isosurface(X,Y,Z,S,34);
    p2 = patch('Parent',ax,'Faces',F2,'Vertices',V2,'FaceColor',C(2,:), ...
               'EdgeColor','none','FaceAlpha',0.80,'FaceLighting','gouraud');
    isonormals(X,Y,Z,S,p2);
    try, camlight(ax,'headlight'); camlight(ax,45,15); catch, end
    lighting(ax,'gouraud');
    xlabel(ml_tx('周向 <i>x</i> / m')); ylabel(ml_tx('周向 <i>y</i> / m'));
    zlabel(ml_tx('端部轴向 <i>z</i> / m'));
    xlim(ax,[-0.20 0.20]); ylim(ax,[-0.20 0.20]); zlim(ax,[0 0.30]);
    lgp(ax,PP,{'等值面 <i>B</i> = 18 mT','等值面 <i>B</i> = 34 mT'},'northeast');
    save_png(f,FIGD,'电机端部漏磁等值面');
catch ME, fprintf('[FAIL] 8-5 %s\n',ME.message); close all; end
posted @ 2026-11-10 08:30  小青蛙电气  阅读(2)  评论(0)    收藏  举报