Files
3D_EDFM_SIM-X/post processor/plot_3D.m
T
2026-03-13 11:24:41 +08:00

70 lines
2.0 KiB
Matlab

% 主程序示例
clear; clc; close all;
% 设置网格参数
nx = 20;
ny = 15;
nz = 10;
% 生成非均匀网格尺寸
dx = linspace(0.5, 1.5, nx)'; % x方向网格尺寸从0.5到1.5变化
dy = linspace(0.8, 1.2, ny)'; % y方向网格尺寸从0.8到1.2变化
dz = ones(nz, 1) * 1.0; % z方向均匀网格
% 生成示例数据(例如:三维高斯分布)
x_center = sum(dx)/2; % 中心位置
y_center = sum(dy)/2;
z_center = sum(dz)/2;
% 计算每个网格点的坐标
x_pos = zeros(nx, 1);
x_pos(1) = dx(1)/2;
for i = 2:nx
x_pos(i) = x_pos(i-1) + (dx(i-1) + dx(i))/2;
end
y_pos = zeros(ny, 1);
y_pos(1) = dy(1)/2;
for i = 2:ny
y_pos(i) = y_pos(i-1) + (dy(i-1) + dy(i))/2;
end
z_pos = zeros(nz, 1);
z_pos(1) = dz(1)/2;
for i = 2:nz
z_pos(i) = z_pos(i-1) + (dz(i-1) + dz(i))/2;
end
% 创建网格坐标
[X, Y, Z] = ndgrid(x_pos, y_pos, z_pos);
% 生成示例物理量数据(三维高斯分布)
sigma_x = max(x_pos)/3;
sigma_y = max(y_pos)/3;
sigma_z = max(z_pos)/3;
data = exp(-((X - x_center).^2/(2*sigma_x^2) + ...
(Y - y_center).^2/(2*sigma_y^2) + ...
(Z - z_center).^2/(2*sigma_z^2)));
% 绘制不同类型的图
% plot_3d_grid_data_slice(nx, ny, nz, dx, dy, dz, data);
% plot_3d_grid_data_scatter(nx, ny, nz, dx, dy, dz, data);
% plot_3d_grid_data_volume(nx, ny, nz, dx, dy, dz, data);
% 方法1:基本体素图
fprintf('绘制方法1:基本体素图...\n');
plot_3d_grid_voxel_full(nx, ny, nz, dx, dy, dz, data);
title('方法1:基本体素图 - 高斯分布');
% 方法2:优化版本
fprintf('绘制方法2:优化版本...\n');
plot_3d_grid_patch_optimized(nx, ny, nz, dx, dy, dz, data);
title('方法2:优化版本 - 球壳分布');
% 方法3:体素函数法
fprintf('绘制方法3:体素函数法...\n');
plot_3d_grid_voxel_function(nx, ny, nz, dx, dy, dz, data);
title('方法3:体素函数法 - 波纹分布');
% 方法4:半透明效果
fprintf('绘制方法4:半透明效果...\n');
plot_3d_grid_transparent(nx, ny, nz, dx, dy, dz, data);