先看一下Patch()函数能干啥,需要详细信息的输入doc patch
就好了
下面进入正题,转向三维
1 MATLAB绘制立方体
2 绘制函数简介
2.1 参数说明
1%% 功能: 绘制CUBE
2% 无返回值!
3% 参数说明:
4% *1 EDGES : 三条边的长度,3维
5% *2 ORIGIN: 起点,3维
6% *3 ALPHA : 透明的,标量
7% (from 0 to 1)
8% *4 COLOR : RGB颜色(0~1)
9%
2.2 测试函数
1%% 测试示例:
2% >> plotcube([5 5 5],[ 2 2 2],.8,[1 0 0]);
3% >> plotcube([5 5 5],[10 10 10],.8,[0 1 0]);
4% >> plotcube([5 5 5],[20 20 20],.8,[0 0 1]);
3. 完整.m文件
1function plotcube(varargin)
2%% 功能: 绘制CUBE
3% 无返回值!
4% 参数说明:
5% *1 EDGES : 三条边的长度,3维
6% *2 ORIGIN: 起点,3维
7% *3 ALPHA : 透明的,标量
8% (from 0 to 1)
9% *4 COLOR : RGB颜色(0~1)
10%
11%% 测试示例:
12% >> plotcube([5 5 5],[ 2 2 2],.8,[1 0 0]);
13% >> plotcube([5 5 5],[10 10 10],.8,[0 1 0]);
14% >> plotcube([5 5 5],[20 20 20],.8,[0 0 1]);
15
16%% 默认值
17inArgs = { ...
18 [10 56 100] , ... % Default edge sizes (x,y and z)
19 [10 10 10] , ... % Default coordinates of the origin point of the cube
20 .7 , ... % Default alpha value for the cube's faces
21 [255 199 53]/255 }; % Default Color for the cube
22
23%% 函数主体
24inArgs(1:nargin) = varargin;
25
26[edges,origin,alpha,clr] = deal(inArgs{:});
27
28XYZ = { ...
29 [0 0 0 0] [0 0 1 1] [0 1 1 0] ; ...
30 [1 1 1 1] [0 0 1 1] [0 1 1 0] ; ...
31 [0 1 1 0] [0 0 0 0] [0 0 1 1] ; ...
32 [0 1 1 0] [1 1 1 1] [0 0 1 1] ; ...
33 [0 1 1 0] [0 0 1 1] [0 0 0 0] ; ...
34 [0 1 1 0] [0 0 1 1] [1 1 1 1] ...
35 };
36
37XYZ = mat2cell(...
38 cellfun( @(x,y,z) x*y+z , ...
39 XYZ , ...
40 repmat(mat2cell(edges,1,[1 1 1]),6,1) , ...
41 repmat(mat2cell(origin,1,[1 1 1]),6,1) , ...
42 'UniformOutput',false), ...
43 6,[1 1 1]);
44
45cellfun(@patch,XYZ{1},XYZ{2},XYZ{3},...
46 repmat({clr},6,1),...
47 repmat({'FaceAlpha'},6,1),...
48 repmat({alpha},6,1)...
49 );
50view(3);
{"TIP":"第一次用node.js和md联合写推送,
如果ios用户发现代码区格式不对,欢迎后台反馈"}