如何在matlab或R中绘制实体?

时间:2013-03-28 13:28:59

标签: r matlab plot

我有一个3D区域,由以下3个方程和轴包围。 x+y<1x>(z/(1+z))*(1-y)x>1-((1+z)*y/z)xyz的约束位于01

按照matlab代码生成3D图,我想将有界区域显示为实体。怎么做?

y=0:0.05:1; %v2
z=0:0.05:1; % delta
[Y,Z]= meshgrid(y,z);
X = 1-Y;
axis([0 1 0 1 0 1]);
surf(X,Y,Z);
hold on;
X = (Z./(1+Z))*(1-Y);
axis([0 1 0 1 0 1]);
surf(X,Y,Z);
X = 1-((1+Z)./Z)*Y;
axis([0 1 0 1 0 1]);
surf(X,Y,Z);

请将解决方案限制为MatlabR

1 个答案:

答案 0 :(得分:2)

%构建单位多维数据集的曲面细分作为单纯复形 sc = tessellatelattice({0:.1:1,0:.1:1,0:.1:1});

%截断它以创建一个直角三角形棱镜, %使得x + y <= 1 sc = planartruncate(sc,[。5 .5 0], - [1 1 0]);

%提取点,创建一组非线性约束 x = sc.domain(:,1); y = sc.domain(:,2); z = sc.domain(:,3); %构建非线性曲面约束 sc.range = [x - (z ./(1+z))。*(1-y),x - (1 - ((1 + z)。* y。/ z))];

%截断那些不符合这些约束的部分 %x>(z /(1 + z))*(1-y) sc = isotruncate(sc,0,1,'range','above');

%x&gt; 1 - ((1 + z)* y / z) sc = isotruncate(sc,0,2,'range','above');

%绘制生成的blob plotsc(SC, '标志物', '无')

triangulated blob

正如你所看到的,它是一个直角三棱柱,但有两个“面孔”,有点夸张。

blob

这使用了我的simplicialcomplex工具箱,我偶尔会发布,但尚未发布,因为学习使用需要花费一些精力。一旦学会了,如果有人愿意花费精力学习它,这是一件有用的事情。