用MATLAB绘制一个魔方

Matlab 复制代码
clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;

% 设置图形窗口
figure;

% 创建一个3D坐标轴
% ax = axes3d;

% 设置坐标轴的范围
xlim([-3 3]);
ylim([-3 3]);
zlim([-3 3]);

% 设置坐标轴的标签
xlabel('X');
ylabel('Y');
zlabel('Z');

% 设置网格线
grid on;

% 绘制魔方
% 假设魔方由27个小立方体组成,每个小立方体的边长为1
for x = -1:1
    for y = -1:1
        for z = -1:1
            % 绘制每个小立方体
            myCuboid([x, x+1], [y, y+1], [z, z+1], rand(1,3));
            hold on;  % 保持当前图形,使得新的图形不会覆盖旧的图形
        end
    end
end

% 设置视角
view(3);
Matlab 复制代码
function myCuboid(xRange, yRange, zRange, faceColor)
% xRange, yRange, zRange 应该是两个元素的向量,分别表示立方体在 x, y, z 方向上的范围
% 例如 xRange = [x1 x2] 表示立方体在 x 轴方向的范围从 x1 到 x2

% 定义立方体的8个顶点
vertices = [
    xRange(1), yRange(1), zRange(1);
    xRange(2), yRange(1), zRange(1);
    xRange(2), yRange(2), zRange(1);
    xRange(1), yRange(2), zRange(1);
    xRange(1), yRange(1), zRange(2);
    xRange(2), yRange(1), zRange(2);
    xRange(2), yRange(2), zRange(2);
    xRange(1), yRange(2), zRange(2)
    ];

% 定义立方体的面
faces = [
    1 2 3 4; % 底面
    5 6 7 8; % 顶面
    1 5 6 2; % 前面
    2 6 7 3; % 右侧面
    3 7 8 4; % 后面
    4 8 5 1  % 左侧面
    ];

% 绘制立方体
patch('Vertices', vertices, 'Faces', faces, 'FaceColor', faceColor, 'EdgeColor', 'none');

% 自动调整视角以更好地显示立方体
axis equal;
view(3);
end
相关推荐
大模型铲屎官30 分钟前
【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
开发语言·人工智能·pytorch·python·深度学习·大模型·字典
yunvwugua__32 分钟前
Python训练营打卡 Day27
开发语言·python
Java致死2 小时前
设计模式Java
java·开发语言·设计模式
zh_xuan2 小时前
c++ 类的语法3
开发语言·c++
belldeep5 小时前
如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码?
c语言·开发语言
LuckyTHP5 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
Blossom.1188 小时前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算
da-peng-song8 小时前
ArcGIS Desktop使用入门(二)常用工具条——数据框工具(旋转视图)
开发语言·javascript·arcgis
galaxy_strive8 小时前
qtc++ qdebug日志生成
开发语言·c++·qt
TNTLWT8 小时前
Qt功能区:简介与安装
开发语言·qt