init
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
function plot_3d_grid_transparent(nx, ny, nz, dx, dy, dz, data)
|
||||
% 绘制半透明效果的三维网格
|
||||
% 输入参数:
|
||||
% nx, ny, nz - 各方向的网格数
|
||||
% dx, dy, dz - 各方向的网格尺寸向量
|
||||
% data - 物理量数据,维度为(nx, ny, nz)
|
||||
|
||||
% 计算每个网格的边界坐标
|
||||
x_edges = zeros(nx+1, 1);
|
||||
x_edges(1) = 0;
|
||||
for i = 1:nx
|
||||
x_edges(i+1) = x_edges(i) + dx(i);
|
||||
end
|
||||
|
||||
y_edges = zeros(ny+1, 1);
|
||||
y_edges(1) = 0;
|
||||
for i = 1:ny
|
||||
y_edges(i+1) = y_edges(i) + dy(i);
|
||||
end
|
||||
|
||||
z_edges = zeros(nz+1, 1);
|
||||
z_edges(1) = 0;
|
||||
for i = 1:nz
|
||||
z_edges(i+1) = z_edges(i) + dz(i);
|
||||
end
|
||||
|
||||
% 创建图形
|
||||
figure('Position', [100, 100, 1000, 800]);
|
||||
hold on;
|
||||
|
||||
% 设置颜色映射
|
||||
colormap jet;
|
||||
caxis([min(data(:)), max(data(:))]);
|
||||
|
||||
% 根据物理量值设置透明度
|
||||
% 值越大越不透明,值越小越透明
|
||||
data_min = min(data(:));
|
||||
data_max = max(data(:));
|
||||
data_range = data_max - data_min;
|
||||
|
||||
for i = 1:nx
|
||||
for j = 1:ny
|
||||
for k = 1:nz
|
||||
% 获取当前体素的边界
|
||||
x_min = x_edges(i);
|
||||
x_max = x_edges(i+1);
|
||||
y_min = y_edges(j);
|
||||
y_max = y_edges(j+1);
|
||||
z_min = z_edges(k);
|
||||
z_max = z_edges(k+1);
|
||||
|
||||
% 获取当前体素的物理量值
|
||||
value = data(i, j, k);
|
||||
|
||||
% 根据值设置透明度(值越大越不透明)
|
||||
% alpha_val = 0.3 + 0.6 * (value - data_min) / data_range;
|
||||
alpha_val = 1;
|
||||
|
||||
% 创建体素的8个顶点
|
||||
vertices = [x_min, y_min, z_min;
|
||||
x_max, y_min, z_min;
|
||||
x_max, y_max, z_min;
|
||||
x_min, y_max, z_min;
|
||||
x_min, y_min, z_max;
|
||||
x_max, y_min, z_max;
|
||||
x_max, y_max, z_max;
|
||||
x_min, y_max, z_max];
|
||||
|
||||
% 创建6个面的顶点索引
|
||||
faces = [1 2 3 4; % 底面
|
||||
5 6 7 8; % 顶面
|
||||
1 2 6 5; % 前面
|
||||
2 3 7 6; % 右面
|
||||
3 4 8 7; % 后面
|
||||
4 1 5 8]; % 左面
|
||||
|
||||
% 绘制体素
|
||||
patch('Vertices', vertices, 'Faces', faces, ...
|
||||
'FaceColor', 'flat', ...
|
||||
'FaceVertexCData', value, ...
|
||||
'CDataMapping', 'scaled', ...
|
||||
'FaceAlpha', alpha_val, ...
|
||||
'EdgeColor', 'none');
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
% 设置图形属性
|
||||
colorbar;
|
||||
xlabel('X');
|
||||
ylabel('Y');
|
||||
zlabel('Z');
|
||||
title('三维笛卡尔网格全充满物理量分布(透明度与数值相关)');
|
||||
axis equal;
|
||||
view(3);
|
||||
grid on;
|
||||
box on;
|
||||
|
||||
% 光照设置
|
||||
lighting gouraud;
|
||||
light('Position', [1 1 1], 'Style', 'infinite');
|
||||
light('Position', [-1 -1 -1], 'Style', 'infinite');
|
||||
|
||||
hold off;
|
||||
end
|
||||
Reference in New Issue
Block a user