- 积分
- 6
- 注册时间
- 2008-9-25
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2010-12-29 13:01:36
|
显示全部楼层
来自 湖南怀化
下面的代码是动态的,呵呵,你也可以改成自己想要的!
nn = 20;(*随机转动的次数*)
tu = {};
Module[{tt =
Table[{RandomInteger[{1, 3}], RandomInteger[{1, 3}]}, {nn}]},
Print[tt];
a = Table[Red, {3}, {3}]; b = Table[White, {3}, {3}];
c = Table[Green, {3}, {3}];
d = Table[Brown, {3}, {3}]; e = Table[Blue, {3}, {3}];
f = Table[Yellow, {3}, {3}];
move[t_] := Module[{temp},
If[t == {1, 1},
temp = a[[1]]; a[[1]] = b[[1]]; b[[1]] = e[[1]];
e[[1]] = Reverse[f[[1]]]; f[[1]] = Reverse[temp];
temp = d[[1]]; d[[1]] = Reverse[d[[All, 1]]];
d[[All, 1]] = d[[3]]; d[[3]] = Reverse[d[[All, 3]]];
d[[All, 3]] = temp;];
If[t == {1, 2},
temp = a[[2]]; a[[2]] = b[[2]]; b[[2]] = e[[2]];
e[[2]] = Reverse[f[[2]]]; f[[2]] = Reverse[temp];];
If[t == {1, 3},
temp = a[[3]]; a[[3]] = b[[3]]; b[[3]] = e[[3]];
e[[3]] = Reverse[f[[3]]]; f[[3]] = Reverse[temp];
temp = c[[1]]; c[[1]] = c[[All, 3]];
c[[All, 3]] = Reverse[c[[3]]]; c[[3]] = Reverse[c[[All, 1]]];
c[[All, 1]] = Reverse[temp];];
If[t == {2, 1},
temp = d[[All, 1]]; d[[All, 1]] = b[[All, 1]];
b[[All, 1]] = c[[All, 1]];
c[[All, 1]] = Reverse[f[[All, 1]]]; f[[All, 1]] = Reverse[temp];
temp = a[[1]];
a[[1]] = a[[All, 3]]; a[[All, 3]] = Reverse[a[[3]]];
a[[3]] = Reverse[a[[All, 1]]]; a[[All, 1]] = Reverse[temp];];
If[t == {2, 2},
temp = d[[All, 2]]; d[[All, 2]] = b[[All, 2]];
b[[All, 2]] = c[[All, 2]];
c[[All, 2]] = Reverse[f[[All, 2]]]; f[[All, 2]] = Reverse[temp];];
If[t == {2, 3},
temp = d[[All, 3]]; d[[All, 3]] = b[[All, 3]];
b[[All, 3]] = c[[All, 3]];
c[[All, 3]] = Reverse[f[[All, 3]]]; f[[All, 3]] = Reverse[temp];
temp = e[[1]]; e[[1]] = Reverse[e[[All, 1]]];
e[[All, 1]] = e[[3]]; e[[3]] = Reverse[e[[All, 3]]];
e[[All, 3]] = Reverse[temp];];
If[t == {3, 1}, temp = d[[3]]; d[[3]] = Reverse[a[[All, 3]]];
a[[All, 3]] = c[[1]];
c[[1]] = Reverse[e[[All, 1]]]; e[[All, 1]] = temp;
temp = b[[1]];
b[[1]] = Reverse[b[[All, 1]]]; b[[All, 1]] = b[[3]];
b[[3]] = Reverse[b[[All, 3]]]; b[[All, 3]] = temp;];
If[t == {3, 2},
temp = d[[2]]; d[[2]] = Reverse[a[[All, 2]]];
a[[All, 2]] = c[[2]]; c[[2]] = Reverse[e[[All, 2]]];
e[[All, 2]] = temp;];
If[t == {3, 3},
temp = d[[1]]; d[[1]] = Reverse[a[[All, 1]]];
a[[All, 1]] = c[[3]]; c[[3]] = Reverse[e[[All, 3]]];
e[[All, 3]] = temp;
temp = f[[1]]; f[[1]] = Reverse[f[[All, 1]]]; f[[All, 1]] = f[[3]];
f[[3]] = Reverse[f[[All, 3]]]; f[[All, 3]] = temp;]];
Do[move[tt[[ii]]];
AppendTo[tu,
Graphics3D[
Flatten[{Table[{c[[i, j]],
Polygon[{{j, 0, i}, {j - 1, 0, i}, {j - 1, 0, i - 1}, {j, 0,
i - 1}}]}, {i, 1, 3}, {j, 1, 3}],
Table[{a[[i, j]],
Polygon[{{0, 3 - i, 3 - j}, {0, 3 - i + 1, 3 - j}, {0,
3 - i + 1, 3 - j + 1}, {0, 3 - i, 3 - j + 1}}]}, {i, 1,
3}, {j, 1, 3}],
Table[{b[[i, j]],
Polygon[{{j, 3 - i, 0}, {j, 3 - i + 1, 0}, {j - 1, 3 - i + 1,
0}, {j - 1, 3 - i, 0}}]}, {i, 1, 3}, {j, 1, 3}],
Table[{d[[i, j]],
Polygon[{{j, 3, 3 - i}, {j, 3, 3 - i + 1}, {j - 1, 3,
3 - i + 1}, {j - 1, 3, 3 - i}}]}, {i, 1, 3}, {j, 1, 3}],
Table[{e[[i, j]],
Polygon[{{3, 3 - i, j}, {3, 3 - i + 1, j}, {3, 3 - i + 1,
j - 1}, {3, 3 - i, j - 1}}]}, {i, 1, 3}, {j, 1, 3}],
Table[{f[[i, j]],
Polygon[{{j, 3 - i, 3}, {j, 3 - i + 1, 3}, {j - 1, 3 - i + 1,
3}, {j - 1, 3 - i, 3}}]}, {i, 1, 3}, {j, 1, 3}]},
2]]], {ii, 0, Length[tt], 1}];
Manipulate[Show[tu[[jj]]], {jj, 1, Length[tt], 1}]] |
|