实用技巧 | MATLAB绘制长方体(附MATLAB代码)

时间:2022-12-25 09:59:17


最近在工作中遇到这样一个实际问题,如何用MATLAB绘制出长方体


为了解决这一问题,在网上查阅许多资料后,尝试将相关代码进行调整修改,最终成功解决这一问题。为了让各位后续遇到这一问题时不必再查阅大量资料,在这里将MATLAB源代码分享给各位。



实际效果


起点坐标为(1,1,1),终点坐标为(5,6,7)的长方体如下图所示:

实用技巧 | MATLAB绘制长方体(附MATLAB代码)


如果设置起点坐标为(1,1,1),终点坐标为(1,6,7),则应显示长方形,如下图所示:

实用技巧 | MATLAB绘制长方体(附MATLAB代码)


MATLAB源代码


%% 根据三维空间中起点坐标和终点坐标绘制长方体
%输入start_point: 起点坐标,如[1,1,1];
%输入final_point: 终点坐标,如[5,6,7];
%输出: 长方体
function plot_cuboid(start_point,final_point)
%% 根据起点和终点,计算长方体的8个的顶点
vertexIndex=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1];
cuboidSize=final_point-start_point; %方向向量
vertex=repmat(start_point,8,1)+vertexIndex.*repmat(cuboidSize,8,1);
%% 定义6个平面分别对应的顶点
facet=[1 2 4 3;1 2 6 5;1 3 7 5;2 4 8 6;3 4 8 7;5 6 8 7];
%% 定义8个顶点的颜色,绘制的平面颜色根据顶点的颜色进行插补
color=[0;0;0;0;1;1;1;1];
%% 绘制并展示图像
patch('Vertices',vertex,'Faces',facet,'FaceVertexCData',color,'FaceColor','interp','FaceAlpha',0.5);
view([1,1,1]);
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on
%% 设置xyz显示范围
xmin=min(vertex(:,1))-1;
xmax=max(vertex(:,1))+1;
ymin=min(vertex(:,2))-1;
ymax=max(vertex(:,2))+1;
zmin=min(vertex(:,3))-1;
zmax=max(vertex(:,3))+1;
axis([xmin xmax ymin ymax zmin zmax])
end


使用方式


只需要在脚本函数中输入长方体的两个顶点坐标,即可绘制长方体,实例如下:

clear
clc
plot_cuboid([1,1,1],[5,6,7]);


留言板

▎参考


https://ww2.mathworks.cn/help/matlab/ref/patch.html


OK,老规矩,在公众号“优化算法交流地”里回复关键词【代码】,就能获取一整套高质量智能优化算法的MATLAB代码。