【手把手制作三阶魔方模拟器】用MATLAB绘制一个一阶魔方

21 篇文章 3 订阅

【手把手制作三阶魔方模拟器】用MATLAB绘制一个一阶魔方

by 今天不飞了

有一个酷爱魔方的朋友,托我给他定制一个专门用于“训练魔方观察和预判能力”的程序。听完需求之后觉得很有趣,就答应了,并决定把整个制作过程公开。

今天不飞了,一起写代码吧!

要完成整个任务我们需要三步:画一个魔方,让魔方动起来,设计训练功能。我们先来做第一步,要画出一个魔方,首先得会画立方体。

话不多说,直接上代码。

在三维空间绘制一个正方形

要画体,先画面。

% 定义图形的顶点顺序
F = [1,2,3,4];
% 定义图形的顶点坐标
V = [0,0,0; 1,0,0; 1,1,0; 0,1,0];
% 定义图形的颜色
C = [1,1,0];
% 定义图形的不透明度
A = 0.6

% 定义窗口
figure('Position',[900,100,600,700])
axis equal
axis([-1,1,-1,1,-1,1]*2)
grid on
view(1,1,1)

% 绘制
patch('Faces',F,'Vertices',V,'FaceColor',C,'FaceAlpha',A)

效果展示
在这里插入图片描述


在三维空间绘制一个正六面体

我们以正六面体中心为原点,边长为2,则如下图
在这里插入图片描述
六面编号与颜色如下图
在这里插入图片描述
准备完毕,直接上代码

% 六面顶点表
blockFace{1} = [ 1,-1,-1; 1, 1,-1;-1, 1,-1;-1,-1,-1];
blockFace{2} = [ 1,-1,-1; 1, 1,-1; 1, 1, 1; 1,-1, 1];
blockFace{3} = [ 1, 1,-1;-1, 1,-1;-1, 1, 1; 1, 1, 1];
blockFace{4} = [-1, 1,-1;-1,-1,-1;-1,-1, 1;-1, 1, 1];
blockFace{5} = [-1,-1,-1; 1,-1,-1; 1,-1, 1;-1,-1, 1];
blockFace{6} = [ 1,-1, 1; 1, 1, 1;-1, 1, 1;-1,-1, 1];

% 颜色表
color = {[1,1,1],[0,.2,.8],[.8,.0,0],[0,.8,.2],[1,.4,0],[1,1,0]};
% 透明度表
colorAlpha = [1,1,1,1,1,1]*0.8;
% 窗口设定
figure('Position',[900,100,600,700])
axis equal
axis([-1,1,-1,1,-1,1]*2)
grid on
view(1,1,1)
% 绘制
for n = 1:6
    F = [1,2,3,4];
    V = blockFace{n};
    C = color{n};
    A = colorAlpha(n);
    patch('Faces',F,'Vertices',V,'FaceColor',C,'FaceAlpha',A)
end

效果展示(左:透明, 右:不透明)

在这里插入图片描述


其他

  1. 持续更新
  2. B站录播视频:【三阶魔方】手把手从零实现,魔方观察训练程序(一)我们来画个魔方
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值