图像缩略图

PLOTCUBE

版本1.0.0.0(1.74 KB)由 奥利维尔
图3 d cube
4.6
39评级

100次下载

更新01 2007年6月

查看许可协议

在当前坐标轴上显示一个3d立方体

PLOTCUBE(EDGES,ORIGIN,ALPHA,COLOR)显示当前轴上的3d立方体
具有以下属性:
*边:定义立方体边长度的3个元素向量
*原点:定义立方体起点的三元素向量
* ALPHA:定义立方体表面透明度的标量(从0开始)
至1)
*颜色:定义立方体的面颜色的3元素向量

例子:
>>plotcube([55],[22],.8[10]);
>>plotcube([555],[101010],.8[0110]);
>>plotcube([55],[20],.8[01]);

引用作为

奥利维尔(2021)。PLOTCUBE(//www.tatmou.com/matlabcentral/fileexchange/15161-plotcube), MATLAB中央文件交换。检索

评论和评级(44

Sathish Sanjeevi

" Hedayati

鲁伊·努内斯

耶稣Garicano-Mena

安德烈Bunchuk

戴维·洛佩斯·拉莫斯

奇亚拉Moreschini

你好奥利弗!这段代码似乎工作得很好,但我不知道它是否对我的问题有用。请在Matlab论坛上看到这个问题//www.tatmou.com/matlabcentral/answers/683263-find-point-of-intersection-between-a-cube-and-a-line-in-3d如果可以的话,请帮助我。非常感谢。

胡安·吉梅内斯

明曰

Navayo Erlangga

函数[]= quaderplot(st,a,b,c,far)
%此处是此函数的无标题摘要
这里有详细的解释
a=a+st;
plt3 ([st a],[0 0],[0 0],远)
抓住;
[st st],[0 b],[0 0],far)
[a a],[0 b],[0 0],far
图3([st a]、[b b]、[0 0],远)
图3([st st]、[0 0]、[0 c]、far)
([st st],[b b],[0 c],远)
图3([a a]、[0 0]、[0 c]、远)
[a a],[b b],[0 c],far
([st a],[0 0],[c c],far)
[st st],[0 b],[c c],far)
图3([a a]、[0 b]、[c c]、far)
图3([st a]、[b b]、[c c]、far)
抓住;
结束

杨洋

单调的

非常感谢,奥利维尔。它将正常工作。有可能在渐变中给一组立方体上色吗?

布鲁诺·斯特拉诺

弘毅

施奈德

> > plotcube([。5。5。5]、[。2.2 .2],0.1,[0 0 1])
无法识别的函数或变量'plotcube'。

如何避免出现此错误?我正在Windows10上使用MatlabR2019B。同样的问题也出现在Matlab Android应用程序中!

布拉德阿特金斯

豪森纳杜尔酒店

雅各布·斯蒂芬斯

亚当Danz

简单直观!我建议添加一个轴句柄输入,用num2cell替换mat2cell,并为立方体的每一侧返回一个对象句柄向量。它看起来像这样。

函数h=PLOTCUBE(varargin)
inArgs={。。。
[10 56 100],…%默认边缘大小(x,y和z)
[10 10 10],…%立方体原点的默认坐标
7,…%立方体表面的默认alpha值
[1 0 0] , ... % 立方体的默认颜色
gca…%默认轴
};
%用输入值替换默认输入参数
inArgs(1:nargin)=varargin;
创建所有变量
[edges,origin,alpha,clr,axh]=deal(inArgs{:});
XYZ={。。。
[0 0 0 0] [0 0 1 1] [0 1 1 0];...
[1 1 1 1] [0 0 1 1] [0 1 1 0];...
[0 1 1 0] [0 0 0 0] [0 0 1 1];...
[0 1 1 0] [1 1 1] [0 0 1 1];...
[0 1 1 0] [0 0 1 1] [0 0 0 0];...
[0 1 1 0][0 0 1 1][1 1 1]…
};
XYZ = mat2cell(…
cellfun(@(x,y,z)x*y+z。。。
XYZ。。。
repmat (num2cell(边缘)、6、1),…
repmat (num2cell(起源)、6、1),…
“UniformOutput”,假),…
6、(1 1 1));
h = cellfun (@patch repmat ({axh} 6 1),…
XYZ XYZ {1}, {2}, XYZ{3},……
repmat ({clr} 6 1),…
repmat({‘FaceAlpha} 6 1),…
repmat({alpha},6,1)。。。
);
视图(3);

亚当Danz

优雅的李

普利亚塔瓦酒店

被罩戈兰高地

艾米·劳

丹尼尔绿色

卡莱布·努内斯

安德斯·汉森

萨哈苏尼塔酒店

绘制完立方体后,我要存储立方体顶点的坐标。怎么做呢?

莫先生

@Osman Akar:你知道怎么给这个函数添加图例吗?

莫先生

你知道如何在这个函数中添加图例吗?

奥斯曼Akar

代码不错,但是有点慢

Stefan Schmohl

埃琳娜·塞尔科

谢谢你的密码,奥利维尔。
我同意Mike关于优化大型数据集代码的建议。
以下是uint8图像的3D可视化应用程序示例(其中包含大量数据):

图(1);colormap灰色
对于i=1:Nx
j = 1:纽约
对于k=1:Nz
图(1);plotcube([1 1 1],[I -1 j-1 k-1],.8,I(I,j,k));抓住
结束
结束
结束
集合(gca,'DataAspectRatio',[100]);

其中I是大小为(Nx,Ny,Nz)的3D图像。

迈克

你好奥利弗,
很好的代码,谢谢:)
但是,有没有办法改变立方体的边缘透明度?
例如,在代码中添加“EdgeAlpha”,例如在当前行下面添加一行“FaceAlpha”:
repmat({‘FaceAlpha} 6 1),…

另外,有没有任何方法来优化这个代码,非常大的数据集?(比如几十万块!)
e、 g.尽可能以某种方式将数据类型更改为uint8或uint16?
(如果我试图在uint8格式的数据有一个错误在'cellfun':

plotcube>@(x,y,z)x*y+z(第41行)
cellfun(@(x,y,z)x*y+z。。。

再次干杯!
迈克

卡扎瓦

非常感谢

欣迪李

谢谢:)

Thouraya

谢谢

大学LAJHDAR

艾哈迈德

谢谢真的很有帮助

帕尼托恩

非常好

韦森特

MATLAB版本兼容性
使用R2007a创建
与任何版本兼容
平台的兼容性
窗户 马科斯 Linux
确认

启发:rppd

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!