How do I plot a 3D cube in a 3D array?

45 ビュー (過去 30 日間)
Lieke Pullen
Lieke Pullen 2022 年 1 月 13 日
コメント済み: Cris LaPierre 2022 年 1 月 15 日
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!

回答 (1 件)

Cris LaPierre
Cris LaPierre 2022 年 1 月 13 日
  4 件のコメント
Cris LaPierre
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
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

サインインしてコメントする。

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by