我希望在MATLAB中绘制一个由一组不等式限定的三维区域。
例如:
0 <= x <= 1
sqrt(x) <= y <= 1
0 <= z <= 1 - y
我在这个网站上找到了一个二维示例,但我不确定如何将其转换为三维。 如何绘制不等式。
编辑: 在@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')