MATLAB绘制正四面体、正六面体
clc;close all;clear all;warning off;% clear all
rand('seed', 100);
randn('seed', 100);
format long g;% 正四面体(Tetrahedron)
% 顶点坐标(正四面体的顶点位于一个正方体的对角线上,并经过适当缩放)
vertices = [1 1 1;-1 -1 1;1 -1 -1;-1 1 -1] / sqrt(3); % 缩放以确保边长为1% 边(由顶点索引组成的对)
edges = [1 2;1 3;1 4;2 3;2 4;3 4 % 这条边是完整的正四面体结构中的一部分,之前可能由于误解而认为缺失];% 绘制多面体的边
figure;
hold on;
for i = 1:size(edges, 1)% 使用循环遍历每条边,并绘制它plot3(vertices(edges(i, :), 1), vertices(edges(i, :), 2), vertices(edges(i, :), 3), 'k-');
end% 绘制顶点(可选,因为边已经连接了顶点)
plot3(vertices(:, 1), vertices(:, 2), vertices(:, 3), 'ro');% 设置图形属性
axis equal;
grid on;
xlabel('X');
ylabel('Y');
zlabel('Z');
title('Tetrahedron');
view(3); % 设置视角以便更好地查看正四面体
hold off;% 正六面体(Cube)
% 顶点坐标
vertices = [1 1 1; -1 1 1; -1 -1 1; 1 -1 1;1 1 -1; -1 1 -1; -1 -1 -1; 1 -1 -1] / sqrt(3);% 面(由顶点索引组成)
faces = [1 2 3 4;5 6 7 8;1 2 6 5;2 3 7 6;3 4 8 7;4 1 5 8];% 绘制多面体
figure;
hold on;
for i = 1:size(faces, 1)plot3(vertices(faces(i, :), 1), vertices(faces(i, :), 2), vertices(faces(i, :), 3), 'k-');
end
plot3(vertices(:, 1), vertices(:, 2), vertices(:, 3), 'ro'); % 顶点
axis equal;
grid on;
title('Cube');
hold off;