等值面图(`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

浙公网安备 33010602011771号