How to plot a 3D cube based if i have the coordinates of the 8 surrounding nodes?

261 vues (au cours des 30 derniers jours)
Hello community,
I want to plot a 3d cube based on the coordinates of my geometry (8 nodes). The coordinates of my cube are:
coord=[0 0 0;
0.5 0 0;
0.5 0.5 0;
0 0.5 0;
0 0 0.5;
0.5 0 0.5;
0.5 0.5 0.5;
0 0.5 0.5;];
Thanks a lot in advance.

Réponse acceptée

Kelly Kearney
Kelly Kearney le 4 Nov 2021
To expand on Star Strider's answer, in your example, you've specified a list of coordinates, but you haven't told Matlab how they should be connected. Based on your original example, the following array of row indices defines the faces of your cube:
coord = [...
0 0 0;
0.5 0 0;
0.5 0.5 0;
0 0.5 0;
0 0 0.5;
0.5 0 0.5;
0.5 0.5 0.5;
0 0.5 0.5;];
idx = [4 8 5 1 4; 1 5 6 2 1; 2 6 7 3 2; 3 7 8 4 3; 5 8 7 6 5; 1 4 3 2 1]';
To plot, substitute the coordinates:
xc = coord(:,1);
yc = coord(:,2);
zc = coord(:,3);
ax(1) = subplot(2,1,1);
patch(xc(idx), yc(idx), zc(idx), 'r', 'facealpha', 0.1);
view(3);
% Deformed
coord2 = coord + rand(size(coord))*0.1;
xc = coord2(:,1);
yc = coord2(:,2);
zc = coord2(:,3);
ax(2) = subplot(2,1,2);
patch(xc(idx), yc(idx), zc(idx), 'r', 'facealpha', 0.1);
view(3);
  8 commentaires
Simson Hutagalung
Simson Hutagalung le 24 Juin 2022
how if those coordinate data from excel?
Krishna Prasad
Krishna Prasad le 13 Avr 2025
how to write idx? I am kind of new. please help me

Connectez-vous pour commenter.

Plus de réponses (1)

Eric
Eric le 25 Juil 2024
Another route using the 'surf' function:
x = 0.5*[ 1 1 1 1 1; 1 1 -1 -1 1;1 1 -1 -1 1;1 1 1 1 1];
y = 0.5*[ 1 -1 -1 1 1; 1 -1 -1 1 1;1 -1 -1 1 1;1 -1 -1 1 1];
z = 0.5*[-1 -1 -1 -1 -1;-1 -1 -1 -1 -1;1 1 1 1 1;1 1 1 1 1];
% Plow
fig = figure("Name","cube");
surf(x,y,z,'FaceColor','g')
set(fig.CurrentAxes,"XLim",[-1 1],"YLim",[-1 1],"ZLim",[-1 1]);
xlabel("x")
ylabel("y")
zlabel("z")

Community Treasure Hunt

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

Start Hunting!

Translated by