找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4198|回复: 3
收起左侧

MATLAB对三阶魔方建模并进行旋转操作 附源程序

[复制链接]
ID:346836 发表于 2018-6-7 12:32 | 显示全部楼层 |阅读模式
这是我在毕设期间做的关于魔方机械手的一部分东西,属于matlab对于颜色识别部分,这里是对魔方惊醒了建模。大家在matlab里就可以实现。希望对大家有帮助 MATLAB建模.PNG

MATLAB源程序:
  1. clc;clear;
  2. close all;
  3. x=[-0.5 +0.5 +0.5 -0.5 -0.5 -0.5;
  4.     +0.5 +0.5 -0.5 -0.5 +0.5 +0.5;
  5.     +0.5 +0.5 -0.5 -0.5 +0.5 +0.5;
  6.     -0.5 +0.5 +0.5 -0.5 -0.5 -0.5];
  7. y=[-0.5 -0.5 +0.5 -0.5 -0.5 -0.5;
  8.     -0.5 +0.5 +0.5 +0.5 -0.5 -0.5;
  9.     -0.5 +0.5 +0.5 +0.5 +0.5 +0.5;
  10.     -0.5 -0.5 +0.5 -0.5 +0.5 +0.5];
  11. z=[0 0 0 0 0 1;
  12.     0 0 0 0 0 1;
  13.     1 1 1 1 0 1;
  14.     1 1 1 1 0 1];
  15. Orgcell1=[1 0 1 0 1 1];
  16. Orgcell2=[0 0 0.46 1 1 1];
  17. Orgcell3=[0 1 0 0 0 1];
  18. Org1(:,1)=Orgcell1;
  19. Org2(:,1)=Orgcell2;
  20. Org3(:,1)=Orgcell3;
  21. x1=ones(size(x))+x;
  22. y1=ones(size(x))+y;
  23. x2=-1*ones(size(x))+x;
  24. y2=-1*ones(size(x))+y;
  25. z1=ones(size(z))+z;
  26. z2=-1*ones(size(z))+z;
  27. Org(1,:,:)=[Org1 Org2 Org3 ];
  28. Org(2,:,:)=[Org1 Org2 Org3 ];
  29. Org(3,:,:)=[Org1 Org2 Org3 ];
  30. Org(4,:,:)=[Org1 Org2 Org3 ];

  31. h.h0=patch(x2,y1,z, Org);
  32. axis equal tight  
  33. axis([-4 4 -4 4 -4 4]);
  34. hold on;
  35. h.h1=patch(x,y1,z, Org);
  36. h.h2=patch(x1,y1,z, Org);
  37. h.h3=patch(x2,y,z, Org);
  38. h.h4=patch(x,y,z, Org);
  39. h.h5=patch(x1,y,z, Org);
  40. h.h6=patch(x2,y2,z, Org);
  41. h.h7=patch(x,y2,z, Org);
  42. h.h8=patch(x1,y2,z, Org);


  43. h.h10=patch(x2,y1,z1, Org);
  44. h.h11=patch(x,y1,z1, Org);
  45. h.h12=patch(x1,y1,z1, Org);
  46. h.h13=patch(x2,y,z1, Org);
  47. h.h14=patch(x,y,z1, Org);
  48. h.h15=patch(x1,y,z1, Org);
  49. h.h16=patch(x2,y2,z1, Org);
  50. h.h17=patch(x,y2,z1, Org);
  51. h.h18=patch(x1,y2,z1, Org);


  52. h.h20=patch(x2,y1,z2, Org);
  53. h.h21=patch(x,y1,z2, Org);
  54. h.h22=patch(x1,y1,z2, Org);
  55. h.h23=patch(x2,y,z2, Org);
  56. h.h24=patch(x,y,z2, Org);
  57. h.h25=patch(x1,y,z2, Org);
  58. h.h26=patch(x2,y2,z2, Org);
  59. h.h27=patch(x,y2,z2, Org);
  60. h.h28=patch(x1,y2,z2, Org);
  61. hold off;
  62. title('Rubic Cube');
  63. xlabel('Variable X');
  64. ylabel('Variable Y');
  65. zlabel('Variable Z');
  66. grid on;
  67. %view(0,0);   
  68.     origin=[0 0 0.5];
  69.     direct1=[0 1 0];      
  70.     direct2=[0 0 1];      
  71.     direct3=[0 0 1];      
  72.     direct4=[1 0 0];      
  73.     direct5=[1 0 0];      
  74.     direct6=[0 1 0];
  75.     direct=[direct1;direct2;direct3;direct4;direct5;direct6];
  76.     theta1=45;
  77.     theta2=45;
  78.     theta3=-45;
  79.     theta4=-45;
  80.     theta5=45;
  81.     theta6=-45;
  82.     theta=2*[theta1,theta2,theta3,theta4,theta5,theta6];
  83.     H.H1=[h.h6  h.h7  h.h8;         %H1为红色面         
  84.         h.h16 h.h17 h.h18;
  85.         h.h26 h.h27 h.h28];
  86.     H.H2=[h.h20 h.h21  h.h22;       %H2为黄色面
  87.         h.h23 h.h24  h.h25;
  88.         h.h26 h.h27  h.h28];
  89.     H.H3=[h.h10 h.h11  h.h12;       %H3为白色面
  90.         h.h13 h.h14  h.h15;
  91.         h.h16 h.h17  h.h18];
  92.     H.H4=[h.h2  h.h5   h.h8;       %H4为蓝色面
  93.         h.h12 h.h15  h.h18;
  94.         h.h22 h.h25  h.h28];
  95.     H.H5=[h.h0  h.h3   h.h6;       %H5为绿色面
  96.         h.h10 h.h13  h.h16;
  97.         h.h20 h.h23  h.h26];
  98.     H.H6=[h.h0  h.h1   h.h2;       %H6为橙色面
  99.         h.h10 h.h11  h.h12;
  100.         h.h20 h.h21  h.h22];
  101. for i=0:23
  102.     [H,h]=CubicRotate(H,h,direct,theta,origin,mod(i,6)+1);

  103. end



  104. function [H,h]=CubicRotate(H,h,direct,theta,origin,surface)
  105. switch surface
  106.     case 1
  107.         Handle=H.H1;
  108.     case 2
  109.         Handle=H.H2;
  110.     case 3
  111.         Handle=H.H3;
  112.     case 4
  113.         Handle=H.H4;
  114.     case 5
  115.         Handle=H.H5;
  116.     case 6
  117.         Handle=H.H6;
  118. end


  119. for i=1:10
  120.     rotate(Handle,direct(surface,:),theta(surface)/10,origin);
  121.     pause(0.01);
  122. end
  123. [H,h]=RotateConvert(H,h,surface);
复制代码

全部资料51hei下载地址:
MATLAB对三阶魔方建模并进行旋转操作.zip (1.13 KB, 下载次数: 46)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:807820 发表于 2020-7-25 10:07 | 显示全部楼层
好神奇
回复

使用道具 举报

ID:896777 发表于 2021-3-26 02:36 | 显示全部楼层
不全啊
回复

使用道具 举报

ID:896777 发表于 2021-3-26 02:39 | 显示全部楼层
大佬可否分享一下matlab三阶魔方的完整程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表