matlab 根据顶点坐标绘制三维立方体棱线(当部分边有权值时,有更多的边时方法是类似的)
a25=load(‘xx0.25’);%顶点x坐标,大立方体外表面棱边权值为0.25的边的两顶点x坐标,第一列为边的第一个顶点坐标,第二列
%为该边的第二个顶点的坐标
a5=load(‘xx0.5’);%大立方体表面的面上的除棱线处的边权值为0.5的边的两顶点x坐标
b25=load(‘yy0.25’);%含义同上,顶点y坐标
b5=load(‘yy0.5’);
c25=load(‘zz0.25’);%含义同上,顶点z坐标
c5=load(‘zz0.5’);
r25=size(a25,1);%边的个数(我的xx0.25文件里有两列数据,第一列为边的顶点1的x坐标,
%第二列为边的顶点2的x坐标,y,z坐标同理,取一列的个数即为边的个数)
r5=size(a5,1);
%xyz25第一列放所有的x坐标,第二列所有的y坐标,第三列所有的z坐标
xyz25=zeros(2 ∗ * ∗r25,3);%先顶点1坐标,后顶点2坐标,整合到一起,前r25行放第一个顶点的信息,后r25行放第二个顶点的信息
xyz25(:,1)=[a25(:,1);a25(:,2)];%a25(:,1)为边的第一个顶点的x坐标,放入前r25行,a25(:,2)为边的第二个顶点的x坐标,
%放入后r25行
xyz25(:,2)=[b25(:,1);b25(:,2)];
xyz25(:,3)=[c25(:,1);c25(:,2)];
s25=[1:r25];%将所有顶点进行编号,取前一半(边的个数的2倍,一条边有两个顶点,未进行顶点的压缩,
%通过坐标使得相同的顶点重合)
t25=[r25+1:2*r25];%将所有顶点进行编号,取后一半,s25的第i个坐标索引与对应的t25中i坐标索引刚好为i边的两端点对应的坐标
%索引
G25=graph(s25,t25);%s中放边的前一个顶点的顶点编号,t中放后一个顶点的顶点编号
xyz5=zeros(2 ∗ * ∗r5,3);
xyz5(:,1)=[a5(:,1);a5(:,2)];
xyz5(:,2)=[b5(:,1);b5(:,2)];
xyz5(:,3)=[c5(:,1);c5(:,2)];
s5=[1:r5];
t5=[r5+1:2*r5];
G5=graph(s5,t5);
x25=xyz25(:,1);%所有顶点的按顶点编号排序的x坐标
y25=xyz25(:,2);%所有顶点的按顶点编号排序的y坐标
z25=xyz25(:,3);%所有顶点的按顶点编号排序的z坐标
x5=xyz5(:,1);
y5=xyz5(:,2);
z5=xyz5(:,3);
plot(G25,‘-*k’,‘XData’,x25,‘YData’,y25,‘ZData’,z25)%,‘-*k’)%通过将顶点编号与顶点坐标结合,使得不同
%的边得以通过公共点连接成立方体的棱线
hold on
plot(G5,‘-.+r’,‘XData’,x5,‘YData’,y5,‘ZData’,z5)%,‘–+r’)
hold on
hold off
效果:
线条及颜色
matlab链接:https://ww2.mathworks.cn/help/matlab/ref/graph.plot.html