MATLAB绘制长方体[patch]
1. 效果展示
例1. 绘制一个原点在(5,10,15),尺寸XYZ为(2,3,4)的长方体:
通过调整坐标轴,可以做出比例适当的图片,如下:
2. 代码汇总
function PlotCuboid(originPoint,cuboidSize)
%% 函数功能: 绘制长方体
% 输入:
% originPoint:长方体的原点,行向量,如[0,0,0];
% cuboidSize:长方体的长宽高,行向量,如[10,20,30];
% 输出:长方体图形
%% 根据原点和尺寸,计算长方体的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];
vertex=originPoint+vertexIndex.*cuboidSize;
%% 定义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=[1;2;3;4;5;6;7;8];
%% 绘制并展示图像
% patch 对图像进行绘制。
% view(3) 将图像放到三维空间中展示。
% 其余的是设置背景等等
patch('Vertices',vertex,'Faces',facet,'FaceVertexCData',color,'FaceColor','interp','FaceAlpha',0.5);
view(3);
xlabel('X');
ylabel('Y');
zlabel('Z');
title('Cuboid');
fig=gcf;
fig.Color=[1 1 1];
fig.Name='cuboid';
fig.NumberTitle='off';
文件自行取用:PlotCuboid.m
提取码:24bg
前面的注释比较清楚,还需要讲一下patch函数。
3. 函数调用
调用方法很简单,第一个参数是长方体的原点,第二个参数是长宽高,输入命令:
PlotCuboid([5,10,15],[2,3,4])
回车运行即可得到例1中的结果。
4. patch函数
patch函数有多种调用形式,我们只谈用到的。
格式如下:
patch('Vertices',V,'Faces',F,Name,Value);
Vertices
指示后面的参数是用到的顶点,即V中存储的是顶点。在本文中,V就是vertex,例1中的Vertex:
可以看到,对应空间中的8个顶点。
Faces
指示后面的参数是需要绘制的面,面由顶点组成。在本文中,F就是facet,例1中的facet:
长方体一共是6个面,每个面由四个点组成,1-8即为8个顶点vertex的索引。
( 注意: 四个点可以形成两个面,实际上是绘制了两个三角面)
Name-Value对指定了一些特殊的属性:
FaceVertexCData
:指定顶点的颜色
FaceColor
:指定面的颜色(这里的interp是使用顶点颜色插值)
FaceAlpha
:指定面的透明度
其余的可以去看官方文档继续了解。