70 lines
2.0 KiB
Matlab
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); |