首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用不同的共格在一个图形中绘制两个等深面对象

用不同的共格在一个图形中绘制两个等深面对象
EN

Stack Overflow用户
提问于 2019-02-02 03:59:22
回答 1查看 232关注 0票数 1

我试图在MATLAB中用3D isosurface函数在一个图形中绘制两个框。

盒的定义

因此,下面的代码用于定义值为1的两个不同框的“内部”区域。

代码语言:javascript
复制
[x, y, z] = meshgrid (-3:0.1:3, -3:0.1:3, -3:0.1:3);
BoxA = (x(:) >= -2 & x(:) <= 1) & (y(:) >= -2 & y(:) <= 1) & (z(:) >= -2 & z(:) <= 1);
BoxA = reshape(BoxA, size(x));
BoxB = (x(:) >= -1 & x(:) <= 2) & (y(:) >= -1 & y(:) <= 2) & (z(:) >= -1 & z(:) <= 2);
BoxB = reshape(BoxB, size(x));

绘图

这是一个代码,用于在相同的图形上绘制上面的框。

代码语言:javascript
复制
figure; hold on;
colormap('autumn');
isosurface(BoxA,0.5);
colormap('winter');
isosurface(BoxB,0.5);
legend('BoxA', 'BoxB');
alpha(0.3); hold off;

我定义了两个不同的autumnwinter,但是我只得到了两个带有相同颜色映射winter的模糊框。

有些人可能会认为isosurface是绘制3D框的一种过度选择,但我也想为3D椭球做类似的工作。

有谁能给我建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-02 08:13:56

函数colormap将颜色映射应用于图形(整个窗口)。几年前,通过显式地给colormap函数一个轴句柄,可以对窗口内的每个轴应用不同的颜色映射。但是,不可能将颜色映射分配到轴内的各个组件。

补丁中的每个多边形(或实际上每个顶点)都可以指定自己的颜色。也可以为所有多边形分配单一颜色。这可能就是你想要的。

这是修改您创建的修补程序的一种方法:

代码语言:javascript
复制
figure; hold on;

h1 = patch(isosurface(BoxA,0.5));
h1.EdgeColor = 'none';
h1.FaceColor = [1,0,0];
h1.FaceAlpha = 0.7;

h2 = patch(isosurface(BoxB,0.5));
h2.EdgeColor = 'none';
h2.FaceColor = [0,1,0];
h2.FaceAlpha = 0.5;

legend('BoxA', 'BoxB');

我们使用的不是没有输出参数的isosurface (它创建补丁对象),而是使用一个输出参数。此输出是绘制修补程序对象的信息。我们将其传递到patch函数,该函数反过来返回修补程序对象的句柄。我们需要这个句柄来修改补丁。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54489853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档