- 积分
- 0
- 注册时间
- 2009-4-6
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 FreddyMusic 于 2009-10-25 13:00 编辑
如何让代码生成的魔方运动起来呢???
- Clear[Lcounter, Rcounter, Fcounter, Bcounter, Ucounter, Dcounter,
- Matrix, FinalMatrix];
- ClearSystemCache[];
- Lcounter :=
- Do[{FinalMatrix[[1]], FinalMatrix[[2, 1]], FinalMatrix[[3, 1]],
- FinalMatrix[[5, 1]], FinalMatrix[[6, 1]]} =
- Map[#.RotationMatrix[Pi/90, {1, 0, 0}] &, {FinalMatrix[[1]],
- FinalMatrix[[2, 1]], FinalMatrix[[3, 1]], FinalMatrix[[5, 1]],
- FinalMatrix[[6, 1]]}, {-2}], {i, 45}];
- (*The adjacent faces of left (1) are 2,3,5 and 6,while all adjacent \
- facets which need to rotate are on the higher depth of the table*)
- Rcounter :=
- Do[{FinalMatrix[[4]], FinalMatrix[[2, 3]], FinalMatrix[[3, 3]],
- FinalMatrix[[5, 3]], FinalMatrix[[6, 3]]} =
- Map[#.RotationMatrix[Pi/90, {-1, 0, 0}] &, {FinalMatrix[[4]],
- FinalMatrix[[2, 3]], FinalMatrix[[3, 3]], FinalMatrix[[5, 3]],
- FinalMatrix[[6, 3]]}, {-2}], {i, 45}];
- (*Same to L*)
- Fcounter :=
- Do[{FinalMatrix[[2]], FinalMatrix[[1, 1]], FinalMatrix[[3, All, 1]],
- FinalMatrix[[4, 1]], FinalMatrix[[6, All, 1]]} =
- Map[#.RotationMatrix[Pi/90, {0, 1, 0}] &, {FinalMatrix[[2]],
- FinalMatrix[[1, 1]], FinalMatrix[[3, All, 1]],
- FinalMatrix[[4, 1]], FinalMatrix[[6, All, 1]]}, {-2}], {i, 45}];
- (*Need to change 3 and 6 because affected facets are on same column \
- but not row*)
- Bcounter :=
- Do[{FinalMatrix[[5]], FinalMatrix[[1, 3]], FinalMatrix[[3, All, 3]],
- FinalMatrix[[4, 3]], FinalMatrix[[6, All, 3]]} =
- Map[#.RotationMatrix[Pi/90, {0, -1, 0}] &, {FinalMatrix[[5]],
- FinalMatrix[[1, 3]], FinalMatrix[[3, All, 3]],
- FinalMatrix[[4, 3]], FinalMatrix[[6, All, 3]]}, {-2}], {i, 45}];
- Ucounter :=
- Do[{FinalMatrix[[6]], FinalMatrix[[1, All, 3]],
- FinalMatrix[[2, All, 3]], FinalMatrix[[4, All, 3]],
- FinalMatrix[[5, All, 3]]} =
- Map[#.RotationMatrix[Pi/90, {0, 0, 1}] &, {FinalMatrix[[6]],
- FinalMatrix[[1, All, 3]], FinalMatrix[[2, All, 3]],
- FinalMatrix[[4, All, 3]], FinalMatrix[[5, All, 3]]}, {-2}], {i,
- 45}]
- Dcounter :=
- Do[{FinalMatrix[[3]], FinalMatrix[[1, All, 1]],
- FinalMatrix[[2, All, 1]], FinalMatrix[[4, All, 1]],
- FinalMatrix[[5, All, 1]]} =
- Map[#.RotationMatrix[Pi/90, {0, 0, 1}] &, {FinalMatrix[[3]],
- FinalMatrix[[1, All, 1]], FinalMatrix[[2, All, 1]],
- FinalMatrix[[4, All, 1]], FinalMatrix[[5, All, 1]]}, {-2}], {i,
- 45}];
- Matrix = Map[
- Function[x,
- Map[x + # &, {{-1.5, -1.5}, {-0.5, -1.5}, {-0.5, -0.5}, {-1.5, \
- -0.5}}]], {{{0, 0}, {0, 1}, {0, 2}}, {{1, 0}, {1, 1}, {1, 2}}, {{2,
- 0}, {2, 1}, {2, 2}}}, {-2}];
- FinalMatrix =
- Flatten[Table[
- Map[Insert[#, i, j] &,
- Matrix, {-2}], {i, {-1.5, 1.5}}, {j, {1, 2, 3}}], 1];
- (*FinalMatrix第一层为六个面,顺序为左右后前下上,第二层为每个面的一行三个块,第三层为每行的三个小正方形,第四层为么个小正方形的\
- 四个定点坐标*)
- Dynamic[Graphics3D[{Riffle[{Yellow, Green, Red, White, Blue, Orange},
- Map[Polygon, FinalMatrix, {-3}]]}, Boxed -> False,
- PlotRange -> 2.5]]
复制代码 |
|