我有以下示例数据:
x = [2;4;6;8;10] y = [10;20;30;40;50] z = [5;5;5;5;5]
我试图在3d空间中绘制2d x/y表面,但由于z是常数,我似乎无法弄清楚如何做到这一点。所有的例子,我已经试图遵循不工作,因为点是共线。谢谢
gpfsuwkq1#
在MATLAB中有不同的是生成一个**'3D矩形'也称为平行六面体**,Wolfram definition。
1.-定义所有实体点
xrange=[0:1:10]; yrange=[0:1:20]; zrange=[0:1:5]; [x,y,z]=meshgrid(xrange,yrange,zrange); x=x(:);y=y(:);z=z(:); P=[x y z]; figure(1); plot3(P(:,1),P(:,2),P(:,3),'.'); axis equal grid on
shp1=alphaShape(P(:,1),P(:,2),P(:,3)) figure(2); plot(shp1) axis equal
构建alphaShape后,可以使用以下volume和surfaceArea命令:
alphaShape
volume
surfaceArea
round(volume(shp1))
同
(xrange(end)-xrange(1))*(yrange(end)-yrange(1))*(zrange(end)-zrange(1)) surfaceArea(shp1)
2*xrange(end)*yrange(end)+2*xrange(end)*zrange(end)+2*yrange(end)*zrange(end)
2.-仅使用顶点
xrange2=[0 10]; yrange2=[0 20]; zrange2=[0 5]; [x2,y2,z2]=meshgrid(xrange2,yrange2,zrange2); x2=[x2(:);5]; y2=[y2(:);10]; z2=[z2(:);2.5]; P2=[x2 y2 z2]; Tes=delaunayn(P2); figure(3) tetramesh(Tes,P2); camorbit(40,0);
3.-使用命令patch
patch
v1=[0 0 0;10 0 0;10 20 0;0 20 0 0 0 5;10 0 5;10 20 5;0 20 5]; f1=[1 2 3 4 1;5 6 7 8 5]; v2=[0 0 0;0 20 0;0 20 5;0 0 5 10 0 0;10 20 0;10 20 5;10 0 5]; f2=[1 2 3 4 1;5 6 7 8 5]; v3=[0 0 0;10 0 0;10 0 5;0 0 5 0 20 0;10 20 0;10 20 5;0 20 5]; f3=[1 2 3 4 1;5 6 7 8 5]; figure(4); hp1=patch('Faces',f1,'Vertices',v1) hp1.FaceColor=[0 .5 0]; hp1.FaceAlpha=.5; hp1.EdgeColor='none'; hp2=patch('Faces',f2,'Vertices',v2) hp2.FaceColor=[.5 0 0]; hp2.FaceAlpha=.5; hp2.EdgeColor='none'; hp3=patch('Faces',f3,'Vertices',v3) hp3.FaceColor=[0 0 .5]; hp3.FaceAlpha=.5; hp3.EdgeColor='none'; grid on xlabel('x');ylabel('y');zlabel('z'); campos([477 -1122 120])
4.-拉伸二维矩形
命令extrude要求导入几何文件。在MATLAB中,几何文件具有以下等效扩展名:.stl.step和.ste.stl,可以使用CAD应用程序(如SolidWorks)生成。在这里,考虑到这种情况是多么简单,不需要SolidWorks,可以直接生成所需的.stl文件。接下来,我生成一个三角网格并将其保存到.stl中,然后使用命令importGeometry构建一个2D矩形,该矩形具有正确的类型,可用作命令extrude的输入。
extrude
.stl
.step
.ste
importGeometry
P=[0 0;10 0;10 20;0 20]; % points T=[1 2 4;2 3 4]; % triangles definition TR=triangulation(T,P) figure(5) triplot(TR) axis equal grid on xlabel('x');ylabel('y');
stlwrite(TR,'base1.stl','text')
这是base1.stl的内容:
base1.stl
solid MATLAB_1 facet normal 0 0 1 outer loop vertex 0 0 0 vertex 10 0 0 vertex 0 20 0 endloop endfacet facet normal 0 -0 1 outer loop vertex 10 0 0 vertex 10 20 0 vertex 0 20 0 endloop endfacet endsolid MATLAB_1
现在进行挤出:
model = createpde; b1 = importGeometry(model,'base1.stl'); figure(6) pdegplot(b1,'FaceLabels','on') extrude(b1,5) pdegplot(b1,'FaceLabels','on','FaceAlpha',0.5) grid on xlabel('x');ylabel('y');zlabel('z');
1条答案
按热度按时间gpfsuwkq1#
在MATLAB中有不同的是生成一个**'3D矩形'也称为平行六面体**,Wolfram definition。
1.-定义所有实体点
构建
alphaShape
后,可以使用以下volume
和surfaceArea
命令:同
同
2.-仅使用顶点
3.-使用命令
patch
4.-拉伸二维矩形
命令
extrude
要求导入几何文件。在MATLAB中,几何文件具有以下等效扩展名:
.stl
.step
和.ste
.stl
,可以使用CAD应用程序(如SolidWorks)生成。在这里,考虑到这种情况是多么简单,不需要SolidWorks,可以直接生成所需的
.stl
文件。接下来,我生成一个三角网格并将其保存到
.stl
中,然后使用命令importGeometry
构建一个2D矩形,该矩形具有正确的类型,可用作命令extrude
的输入。这是
base1.stl
的内容:现在进行挤出: