标题:
MATLAB对三阶魔方建模并进行旋转操作 附源程序
[打印本页]
作者:
Li_iang
时间:
2018-6-7 12:32
标题:
MATLAB对三阶魔方建模并进行旋转操作 附源程序
这是我在毕设期间做的关于魔方机械手的一部分东西,属于matlab对于颜色识别部分,这里是对魔方惊醒了建模。大家在matlab里就可以实现。希望对大家有帮助
MATLAB建模.PNG
(143.08 KB, 下载次数: 34)
下载附件
2018-6-7 12:31 上传
MATLAB源程序:
clc;clear;
close all;
x=[-0.5 +0.5 +0.5 -0.5 -0.5 -0.5;
+0.5 +0.5 -0.5 -0.5 +0.5 +0.5;
+0.5 +0.5 -0.5 -0.5 +0.5 +0.5;
-0.5 +0.5 +0.5 -0.5 -0.5 -0.5];
y=[-0.5 -0.5 +0.5 -0.5 -0.5 -0.5;
-0.5 +0.5 +0.5 +0.5 -0.5 -0.5;
-0.5 +0.5 +0.5 +0.5 +0.5 +0.5;
-0.5 -0.5 +0.5 -0.5 +0.5 +0.5];
z=[0 0 0 0 0 1;
0 0 0 0 0 1;
1 1 1 1 0 1;
1 1 1 1 0 1];
Orgcell1=[1 0 1 0 1 1];
Orgcell2=[0 0 0.46 1 1 1];
Orgcell3=[0 1 0 0 0 1];
Org1(:,1)=Orgcell1;
Org2(:,1)=Orgcell2;
Org3(:,1)=Orgcell3;
x1=ones(size(x))+x;
y1=ones(size(x))+y;
x2=-1*ones(size(x))+x;
y2=-1*ones(size(x))+y;
z1=ones(size(z))+z;
z2=-1*ones(size(z))+z;
Org(1,:,:)=[Org1 Org2 Org3 ];
Org(2,:,:)=[Org1 Org2 Org3 ];
Org(3,:,:)=[Org1 Org2 Org3 ];
Org(4,:,:)=[Org1 Org2 Org3 ];
h.h0=patch(x2,y1,z, Org);
axis equal tight
axis([-4 4 -4 4 -4 4]);
hold on;
h.h1=patch(x,y1,z, Org);
h.h2=patch(x1,y1,z, Org);
h.h3=patch(x2,y,z, Org);
h.h4=patch(x,y,z, Org);
h.h5=patch(x1,y,z, Org);
h.h6=patch(x2,y2,z, Org);
h.h7=patch(x,y2,z, Org);
h.h8=patch(x1,y2,z, Org);
h.h10=patch(x2,y1,z1, Org);
h.h11=patch(x,y1,z1, Org);
h.h12=patch(x1,y1,z1, Org);
h.h13=patch(x2,y,z1, Org);
h.h14=patch(x,y,z1, Org);
h.h15=patch(x1,y,z1, Org);
h.h16=patch(x2,y2,z1, Org);
h.h17=patch(x,y2,z1, Org);
h.h18=patch(x1,y2,z1, Org);
h.h20=patch(x2,y1,z2, Org);
h.h21=patch(x,y1,z2, Org);
h.h22=patch(x1,y1,z2, Org);
h.h23=patch(x2,y,z2, Org);
h.h24=patch(x,y,z2, Org);
h.h25=patch(x1,y,z2, Org);
h.h26=patch(x2,y2,z2, Org);
h.h27=patch(x,y2,z2, Org);
h.h28=patch(x1,y2,z2, Org);
hold off;
title('Rubic Cube');
xlabel('Variable X');
ylabel('Variable Y');
zlabel('Variable Z');
grid on;
%view(0,0);
origin=[0 0 0.5];
direct1=[0 1 0];
direct2=[0 0 1];
direct3=[0 0 1];
direct4=[1 0 0];
direct5=[1 0 0];
direct6=[0 1 0];
direct=[direct1;direct2;direct3;direct4;direct5;direct6];
theta1=45;
theta2=45;
theta3=-45;
theta4=-45;
theta5=45;
theta6=-45;
theta=2*[theta1,theta2,theta3,theta4,theta5,theta6];
H.H1=[h.h6 h.h7 h.h8; %H1为红色面
h.h16 h.h17 h.h18;
h.h26 h.h27 h.h28];
H.H2=[h.h20 h.h21 h.h22; %H2为黄色面
h.h23 h.h24 h.h25;
h.h26 h.h27 h.h28];
H.H3=[h.h10 h.h11 h.h12; %H3为白色面
h.h13 h.h14 h.h15;
h.h16 h.h17 h.h18];
H.H4=[h.h2 h.h5 h.h8; %H4为蓝色面
h.h12 h.h15 h.h18;
h.h22 h.h25 h.h28];
H.H5=[h.h0 h.h3 h.h6; %H5为绿色面
h.h10 h.h13 h.h16;
h.h20 h.h23 h.h26];
H.H6=[h.h0 h.h1 h.h2; %H6为橙色面
h.h10 h.h11 h.h12;
h.h20 h.h21 h.h22];
for i=0:23
[H,h]=CubicRotate(H,h,direct,theta,origin,mod(i,6)+1);
end
function [H,h]=CubicRotate(H,h,direct,theta,origin,surface)
switch surface
case 1
Handle=H.H1;
case 2
Handle=H.H2;
case 3
Handle=H.H3;
case 4
Handle=H.H4;
case 5
Handle=H.H5;
case 6
Handle=H.H6;
end
for i=1:10
rotate(Handle,direct(surface,:),theta(surface)/10,origin);
pause(0.01);
end
[H,h]=RotateConvert(H,h,surface);
复制代码
全部资料51hei下载地址:
MATLAB对三阶魔方建模并进行旋转操作.zip
(1.13 KB, 下载次数: 47)
2018-6-7 12:31 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
y205511
时间:
2020-7-25 10:07
好神奇
作者:
1254246135
时间:
2021-3-26 02:36
不全啊
作者:
1254246135
时间:
2021-3-26 02:39
大佬可否分享一下matlab三阶魔方的完整程序
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1