How do I plot a 3D cube in a 3D array?
조회 수: 10 (최근 30일)
이전 댓글 표시
Hi all,
I was wondering how I can plot a 3D-shape of a cube. I have tried https://in.mathworks.com/matlabcentral/fileexchange/15161-plotcube but this give me a 2D-array, and I cannot seem to get a 3D-array out of it. I have the following code:
array_width=101;%must be odd
outer_cube=create_cube(array_width);
figure; cube=isosurface(outer_cube,0);
patch(cube,'FaceColor',[0 0 .7],'EdgeColor',[0 0 1]);
view(45,45); axis equal; title('Simulation of solid cube');
function cube=create_cube(array_width)
a=(array_width-1)/2;
a=linspace(-a,a,array_width);
[X,Y,Z]=meshgrid(a);
cube=(X.*Y.*Z);
end
But, this give me the following figure:

Can somebody help me out please? Thanks!
댓글 수: 0
답변 (1개)
Cris LaPierre
2022년 1월 13일
댓글 수: 4
Cris LaPierre
2022년 1월 14일
편집: Cris LaPierre
2022년 1월 14일
I would look into slice. To work as I want, I had to adjust your function to return the X,Y,and Z data, too.
array_width=101;%must be odd
[X,Y,Z,outer_cube]=create_cube(array_width);
figure
s = slice(X,Y,Z,outer_cube,[-50 50],[-50 50],[-50 50]);
set(s,'EdgeColor','none')
function [X,Y,Z,cube]=create_cube(array_width)
a=(array_width-1)/2;
a=linspace(-a,a,array_width);
[X,Y,Z]=meshgrid(a);
cube=(X.*Y.*Z);
end
Cris LaPierre
2022년 1월 15일
Here's another approach
array_width=101;%must be odd
[X,Y,Z,outer_cube]=create_cube(array_width);
figure
k=boundary([X(:),Y(:),Z(:)]);
trisurf(k,X(:),Y(:),Z(:),outer_cube,'EdgeColor','none')
function [X,Y,Z,cube]=create_cube(array_width)
a=(array_width-1)/2;
a=linspace(-a,a,array_width);
[X,Y,Z]=meshgrid(a);
cube=(X.*Y.*Z);
end
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


