我想在 MATLAB 中从一组不等式中绘制一个 3d 区域。
例如:
0 <= x <= 1
sqrt(x) <= y <= 1
0 <= z <= 1 - y
我在这个网站上找到了一个 2d 示例,但我不确定如何将其转换为 3d。如何绘制不等式。
编辑:在@Tobold 的帮助下,我修改了代码以将绘制的点限制为由所有三个区域定义的点,但它只绘制 2 或 3 个点。看起来向量 X1、Y1 和 Z1 中的点是正确的,但由于某种原因,它只绘制了几个。有什么想法为什么它只从 X1、Y1 和 Z1 向量中绘制几个点而不是全部?
[X,Y,Z]=meshgrid(0:0.1:1,0:0.1:1,0:0.1:1); % Make a grid of points between 0 and 1
p1=0.1; p2=0.2; % Choose some parameters
X1 = (X >= 0 & X <= 1) & (Y >= sqrt(X) & Y <= 1) & (Z >= 0 & Z <= 1 - Y);
Y1 = (X >= 0 & X <= 1) & (Y >= sqrt(X) & Y <= 1) & (Z >= 0 & Z <= 1 - Y);
Z1 = (X >= 0 & X <= 1) & (Y >= sqrt(X) & Y <= 1) & (Z >= 0 & Z <= 1 - Y);
ineq1 = (X >= 0 & X <= 1) * 2;
ineq2 = (Y >= sqrt(X) & Y <= 1) * 4;
ineq3 = (Z >= 0 & Z <= 1 - Y) * 8;
all = ineq1 & ineq2 & ineq3;
colors = zeros(size(X))+ineq1+ineq2+ineq3;
scatter3(X1(:),Y1(:),Z1(:),3,colors(:)','filled')