0

我有一个3D由以下 3 个方程和轴包围的区域。 x+y<1, x>(z/(1+z))*(1-y), x>1-((1+z)*y/z). x,y并且z有界于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);

请将解决方案限制为Matlabor R

4

1 回答 1

2

% 将单位立方体的曲面细分构建为单纯复形 sc = tessellatelattice({0:.1:1,0:.1:1,0:.1:1});

% 截断它以创建一个直角三棱柱,% 使得 x + y <= 1 sc = planetruncate(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>1-((1+z)*y/z) sc = isotruncate(sc,0,2,'range','above');

% 绘制结果 blob plotsc(sc,'marker','none')

三角斑点

如您所见,它是一个直角三棱柱,但有两个“面”,有点像双曲线。

斑点

这使用了我的简单复杂工具箱,我偶尔会给出,但没有发布,因为学习使用需要一些努力。一旦学会了,它就是有用的东西,如果愿意花精力去学习它。

于 2013-03-28T14:29:51.813 回答