init
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
% 主程序示例
|
||||
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);
|
||||
Reference in New Issue
Block a user