How to plot a 3D wire frame from a given set of nodes?

11 vues (au cours des 30 derniers jours)
Alejandro Zuniga
Alejandro Zuniga le 10 Déc 2021
Commenté : Walter Roberson le 11 Déc 2021
How would I go about plotting something like a rectangular or pyramid “wire” frame in matlab? I found this link for a 3D truss analysis, but it has a lot of extra stuff and I don’t quite understand everything that is happening.
For example, let’s say I want to make a simple rectangular frame made of solid tubes. If I have one point at the origin (0,0,0) and another point at (5,0,0). How could I plot a member between these two points and then specify a thickness? From here, how could I continue to connect members until my rectangular frame is built? I don’t want to continue building from where the last member built, but rather specify all given nodes beforehand, select where/how many members exist between each node and then plot with a given thickness.
I’m just trying to make 3D wire frame structures in MATLAB, no analysis needed. I can do it in SolidWorks, but haven’t found a video on this on the MathWorks website yet.
So far from what I understand I have to specify my points in space as matrices, but then from here I got lost in that huge code.
Thanks in advance and any insight would be helpful.

Réponses (1)

Walter Roberson
Walter Roberson le 11 Déc 2021
[cX, cY, cZ] = cylinder(); %radius 1, points up z
fig = figure();
ax = axes('Parent', fig);
tf(1) = hgtransform(ax);
tf(1).Matrix = makehgtform('scale', [5 1 1], 'yrotate', pi/2);
s(1) = surf(cX, cY, cZ, 'Parent', tf(1));
view(3)
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
  2 commentaires
Alejandro Zuniga
Alejandro Zuniga le 11 Déc 2021
Not really what I was looking for, but I appreciate the response. I think I messed on the wording/explanation of my question. Thank you for taking your time to read my question
Walter Roberson
Walter Roberson le 11 Déc 2021
[cX, cY, cZ] = cylinder(); %radius 1, points up z
fig = figure();
ax = axes('Parent', fig);
tf(1) = hgtransform(ax);
tf(1).Matrix = makehgtform('scale', [5 0.05 0.05], 'yrotate', pi/2);
s(1) = surf(cX, cY, cZ, 'Parent', tf(1));
view(3)
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
... Tube, like you requested.
If what you needed was a line then you could plot3()
For 3D surfaces, you would use surf() like I used here, or you would use patch() -- or sometimes you would use warp()
It is not difficult to create simple 3D meshes and create vertices and faces, and pass those to patch() . But curved segments like a tube get tedious to define by hand, so you would generally create functions to generate the appropriate parts.

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by