机器人WBW
本帖最后由 林扬骐 于 2017-1-24 17:46 编辑
投影系列
(投影(xy/xz/yz平面互换)、拉伸压缩放大缩小、横竖对称与45度斜向对称、斜轴旋转式平面互换(可造异型魔方)、附:比较标准的非90°旋转)
(适用于操作平面)(但是可以用高频使"单层"变为"多层")(附的旋转那个可以直接厚平面)

“投影”即xy/xz/yz平面互换,和斜体一样也是很早就想到了(斜体之后,90度旋转以前,实际上基本是同一时期想出来)不要小看这个“投影”,下面的其它效果都是它引申出来的。

(注:如果帖子里看不了图的,可以转至百度网盘看图)

基本原理示意图

(另见a:http://www.mcbbs.net/thread-654676-1-1.html

2021.12 数据,可能有更多内容
投影系列
(投影(xy/xz/yz平面互换)、拉伸压缩放大缩小、横竖对称与45度斜向对称、斜轴旋转式平面互换(可造异型魔方)、附:比较标准的非90°旋转)(适用于操作平面)(但是可以用高频使"单层"变为"多层")(附的旋转那个可以直接厚平面)
“投影”即xy/xz/yz平面互换,和斜体一样也是很早就想到了(斜体之后,90度旋转以前,实际上基本是同一时期想出来)不要小看这个“投影”,下面的其它效果都是它引申出来的。

(注:如果帖子里看不了图的,可以转至百度网盘看图)
基本原理示意图

(另见a:http://www.mcbbs.net/thread-654676-1-1.html

投影——“翻”与“映”
(拉伸压缩放大缩小也在此)


【思想】:绝对坐标与相对坐标的结合互换
【解说原理】:图中其实也已经阐明,这里稍微讲解一下
1.一个正向的平面(“幕布”)上的方块,一定都有一个坐标的值是相等,这个固定值就是“幕布所在的位置”(除了这一个坐标有固定值可以完全确定以外,其他两个坐标在每个方块上是不同)(如一个xz平面用函数可以表示为y=b);
2.由于这个坐标(设为y)的值(设为b)可以确定,那么,用一群实体去clone这个平面上的每个方块,可以完全不管实体的“y”坐标,只要保证另外两个坐标是可以让实体用相对位置表示就好;
3.而另外一个平面(设为x=a)也可以有“2.”中的效果;
4.所以,两个方向的平面要互换,就要保证:一组实体中,每个实体,能够在自己固定不动的情况下,同时表示两种平面中某一个部分,且这些部分可以组合成为一个完整的平面。这样,利用execute与clone进行的“投影”才会是有用的
(5.另外,两个平面不一定非要像图中那样挨在一起,只要确定各自的固定坐标值,让实体能够表示就好)
(6.再另外,如果实体所在斜线的tan值不是1:1而是1:2什么的,投影过去的平面也会被“拉伸”或“压缩”成相应的大小(来两次就相当于放大缩小了))


【步骤】:
1.确定好“前平面”与“后平面”的位置、大小及方向
2.看两个平面都各自成为一条线,并互相垂直(即侧着看这两个平面),在“另一个平面上”(同时与两个平面垂直)作出一条“对角线”(两种方向,看需要,详见示意图)
3.使用命令(看需要可以加上masked与move等)

代码:

  1. /execute 实体线 ~ ~ ~ clone 前平面所在区 后平面所在区

例:(前:x定;后:y定;实体在xy即z定平面上)

代码:

  1. /execute 实体线 ~ ~ ~ clone x前绝 y前相 z前min x前绝 y前相 z前max x后相 y后绝 z后min

  2. /execute @e[type=snowball,name=turn] ~ ~ ~ clone 41 ~ ~ 41 ~ ~21 ~ 114 ~ masked move

由于太晚了时间不多,剩下的拓展只给出思路、实际指令、图与pcb、存档



拓展
(一)横竖对称【思路】:中间确定一个“中介”,进行两次“翻/映”即可【实际指令】:(使用一次turn2前(所在的第一条)与一次turn2_b后(所在的第二条))


代码:

  1. //turn2——前zyx,下yzx
  2. /execute @e[type=snowball,name=turn2] ~ ~ ~ clone ~ ~ 231 ~21 ~ 231 ~ 114 ~ masked move
  3. /execute @e[type=snowball,name=turn2] ~ ~ ~ clone ~ 114 ~ ~21 114 ~ ~ ~ 231 masked move

  4. //turn——下yxz,左xyz
  5. /execute @e[type=snowball,name=turn] ~ ~ ~ clone ~ 114 ~ ~ 114 ~21 41 ~ ~ masked move
  6. /execute @e[type=snowball,name=turn] ~ ~ ~ clone 41 ~ ~ 41 ~ ~21 ~ 114 ~ masked move

  7. //turn3——左xzy,前zxy
  8. /execute @e[type=snowball,name=turn3] ~ ~ ~ clone 41 ~ ~ 41 ~21 ~ ~ ~ 231 masked move
  9. /execute @e[type=snowball,name=turn3] ~ ~ ~ clone ~ ~ 231 ~ ~21 231 41 ~ ~ masked move





  10. //turn2_b——前zyx,下yzx
  11. /execute @e[type=snowball,name=turn2_b] ~ ~ ~ clone ~ ~ 231 ~21 ~ 231 ~ 114 ~ masked move
  12. /execute @e[type=snowball,name=turn2_b] ~ ~ ~ clone ~ 114 ~ ~21 114 ~ ~ ~ 231 masked move

  13. //turn_b——下yxz,左xyz
  14. /execute @e[type=snowball,name=turn_b] ~ ~ ~ clone ~ 114 ~ ~ 114 ~21 41 ~ ~ masked move
  15. /execute @e[type=snowball,name=turn_b] ~ ~ ~ clone 41 ~ ~ 41 ~ ~21 ~ 114 ~ masked move

  16. //turn3_b——左xzy,前zxy
  17. /execute @e[type=snowball,name=turn3_b] ~ ~ ~ clone 41 ~ ~ 41 ~21 ~ ~ ~ 231 masked move
  18. /execute @e[type=snowball,name=turn3_b] ~ ~ ~ clone ~ ~ 231 ~ ~21 231 41 ~ ~ masked move







(二)45°斜向对称【思路】:具体如原理图与展示图,三个方向各“翻/映”一次,就能做到。【实际指令】:见(一),turn,turn2,turn3各一次“第一条指令”






(三)斜轴旋转
【思路】:三个面位置换一下就好先把位置空出来,各自向顺或逆时针方向进行一次“翻”(但这样并不标准,若要标准,需再来一次(这样原本的“顺/逆”就“颠倒了”)


【实际指令】

代码:

  1. //先生成
  2. /execute @e[type=snowball,name=turn_b] ~ ~ ~ fill ~ ~ ~ 41 114 231 wool 11 replace
  3. /execute @e[type=snowball,name=turn2_b] ~ ~ ~ fill ~ ~ ~ 41 114 231 wool 14 replace
  4. /execute @e[type=snowball,name=turn3_b] ~ ~ ~ fill ~ ~ ~ 41 114 231 wool 13 replace
  5. /fill 41 114 231 62 114 231 air
  6. /fill 41 114 231 41 135 231 air
  7. /fill 41 114 231 41 114 252 air
  8. //调出来,再转(只要不是自的定,可范围(两边同),自定者要用)
  9. /execute @e[type=snowball,name=turn_b] ~ ~ ~ clone ~ ~ ~ 41 ~ ~ 41 ~ ~-1 filtered move wool
  10. /execute @e[type=snowball,name=turn2_b] ~ ~ ~ clone ~ ~ ~ ~ 114 ~ ~-1 114 ~ filtered move wool
  11. /execute @e[type=snowball,name=turn3_b] ~ ~ ~ clone ~ ~ ~ 41 ~ ~ 41 ~-1 ~ filtered move wool

  12. //转(只可“翻”,变的只有前绝对)
  13. //顺
  14. /execute @e[type=snowball,name=turn2] ~ ~ ~ clone ~ ~ 230 ~21 ~ 230 ~ 114 ~ filtered move wool
  15. /execute @e[type=snowball,name=turn] ~ ~ ~ clone ~ 113 ~ ~ 113 ~21 41 ~ ~ filtered move wool
  16. /execute @e[type=snowball,name=turn3] ~ ~ ~ clone 40 ~ ~ 40 ~21 ~ ~ ~ 231 filtered move wool


  17. //逆
  18. /execute @e[type=snowball,name=turn2] ~ ~ ~ clone ~ 113 ~ ~21 113 ~ ~ ~ 231 filtered move wool
  19. /execute @e[type=snowball,name=turn] ~ ~ ~ clone 40 ~ ~ 40 ~ ~21 ~ 114 ~ filtered move wool
  20. /execute @e[type=snowball,name=turn3] ~ ~ ~ clone ~ ~ 230 ~ ~21 230 41 ~ ~ filtered move wool
  21. //若要标准版{
  22. //请延续上面的步骤(顺逆相对,但这次转和上次不同)
  23. //又顺即逆
  24. /execute @e[type=snowball,name=turn2] ~ ~ ~ clone ~ ~ 231 ~21 ~ 231 ~ 113 ~ filtered move wool
  25. /execute @e[type=snowball,name=turn] ~ ~ ~ clone ~ 114 ~ ~ 114 ~21 40 ~ ~ filtered move wool
  26. /execute @e[type=snowball,name=turn3] ~ ~ ~ clone 41 ~ ~ 41 ~21 ~ ~ ~ 230 filtered move wool


  27. //又逆即顺
  28. /execute @e[type=snowball,name=turn2] ~ ~ ~ clone ~ 114 ~ ~21 114 ~ ~ ~ 230 filtered move wool
  29. /execute @e[type=snowball,name=turn] ~ ~ ~ clone 41 ~ ~ 41 ~ ~21 ~ 113 ~ filtered move wool
  30. /execute @e[type=snowball,name=turn3] ~ ~ ~ clone ~ ~ 231 ~ ~21 231 40 ~ ~ filtered move wool
  31. //最后又还原
  32. /execute @e[type=snowball,name=turn_b] ~ ~ ~ clone ~ ~ ~-1 41 ~ ~-1 41 ~ ~ filtered move wool
  33. /execute @e[type=snowball,name=turn2_b] ~ ~ ~ clone ~-1 ~ ~ ~-1 114 ~ ~ 114 ~ filtered move wool
  34. /execute @e[type=snowball,name=turn3_b] ~ ~ ~ clone ~ ~-1 ~ 41 ~-1 ~ 41 ~ ~ filtered move wool
  35. //}



a.单一色
原样

展开



b.若要标准
来检查

翻一次后

第二次翻(但这次翻的方式是“内到外”)(补充:后来想起来,若要做到三个三角形平面的如此旋转,完全重复之前的一次“不标准旋转”才可以标准)

最终



c.(补充)如果不一定要三个三角形而是三个正方形,那么三平面各翻一次并把翻过来的平面储存在外,再同方向翻,把在外的翻进来,也是标准的



附:更标准的非90°旋转
(这是对上一次的改进)
好的,对于非90°旋转,可能扫描法还是最妥当的
【思路】:船的可定相定距离移动+“中介点扫描法”
【简单说明】:1.船是只能定横向的移动的,不能竖向移动,但有了“投影”大法,转换一下方向,也可以算是万能的了(本次并没有将其“翻”成竖向)
2.另外可以发现船就算无重力是可以被推动的,所以,我这里让船骑上了一个无重力雪球防止船被推动
3.船在实际移动过程中会向上移动,不过我选择的clone的y轴都是绝对坐标,就可以避免船上移带来的麻烦了4.我这里是船下面的雪球tp到船后座的雪球,船移动一次其实并没有0.4格
5.千万不要用masked及move,我们并不能保证船下一步不会探测到空气,并且船一次并不能移动1格
【实际命令】(其中41 116 231(下方船),41 141 231(上方船),41 118 231(中介点),36(旋转角度)的数据都是可以改的):
pcb

代码:

  1. init:scoreboard objectives add count dummy 记数
  2. init:kill @e[tag=boatmark]

  3. icb:kill @e[tag=boat]
  4. icb:/summon snowball 41 116 231 {NoGravity:1b,CustomName:"boat_holder",Tags:["boat","1a"],Passengers:[{Rotation:[0:90.0f,1:0.0f],id:boat,CustomName:"boat",Tags:["boat","1a"],Passengers:[{id:snowball,CustomName:"px",Tags:["boat","1a"]},{id:snowball,CustomName:"py",Tags:["boat","1a"]}]}]}
  5. /summon snowball 41 116 231 {NoGravity:1b,CustomName:"boat_holder",Tags:["boat","1b"],Passengers:[{Rotation:[0:180.0f,1:0.0f],id:boat,CustomName:"boat",Tags:["boat","1b"],Passengers:[{id:snowball,CustomName:"px",Tags:["boat","1b"]},{id:snowball,CustomName:"py",Tags:["boat","1b"]}]}]}

  6. /summon snowball 41 141 231 {NoGravity:1b,CustomName:"boat_holder",Tags:["boat","2a"],Passengers:[{Rotation:[0:90.0f,1:0.0f],id:boat,CustomName:"boat",Tags:["boat","2a","2"],Passengers:[{id:snowball,CustomName:"px",Tags:["boat","2a"]},{id:snowball,CustomName:"py",Tags:["boat","2a"]}]}]}
  7. /summon snowball 41 141 231 {NoGravity:1b,CustomName:"boat_holder",Tags:["boat","2b"],Passengers:[{Rotation:[0:180.0f,1:0.0f],id:boat,CustomName:"boat",Tags:["boat","2b","2"],Passengers:[{id:snowball,CustomName:"px",Tags:["boat","2b"]},{id:snowball,CustomName:"py",Tags:["boat","2b"]}]}]}

  8. scoreboard players set counta count 0
  9. scoreboard players set countb count 0

  10. tp @e[type=boat,name=boat,tag=2] ~ ~ ~ ~36 ~
  11. //向左:-
  12. mark:mark boatmark
  13. lazy:rcb:scoreboard players add counta count 1
  14. /execute @e[name=boat_holder,tag=1a] ~ ~ ~ clone ~ 114 ~ ~ 114 ~ 41 118 231
  15. /execute @e[name=boat_holder,tag=2a] ~ ~ ~ clone 41 118 231 41 118 231 ~ 139 ~
  16. /tp @e[name=boat_holder,tag=1a] @e[name=py,type=snowball,tag=1a]
  17. /tp @e[name=boat_holder,tag=2a] @e[name=py,type=snowball,tag=2a]
  18. scoreboard players test counta count 45 100
  19. cond:blockdata ~ ~1 ~ {auto:1b}
  20. icb:blockdata ~ ~ ~ {auto:0b}
  21. scoreboard players remove counta count 45
  22. scoreboard players add countb count 1
  23. /tp @e[name=boat_holder,tag=1b] @e[name=py,type=snowball,tag=1b]
  24. /tp @e[name=boat_holder,tag=2b] @e[name=py,type=snowball,tag=2b]
  25. /tp @e[name=boat_holder,tag=1a] @e[name=boat_holder,tag=1b]
  26. /tp @e[name=boat_holder,tag=2a] @e[name=boat_holder,tag=2b]
  27. scoreboard players test countb count 45 100
  28. cond:execute @e[name=mark,tag=boatmark] ~ ~ ~ blockdata ~ ~ ~ {auto:0b}
  29. cond:scoreboard players reset counta count
  30. cond:scoreboard players reset countb count



单指令:

代码:

  1. /summon falling_block ~ ~1.5 ~ {Time:1,Block:minecraft:redstone_block,Motion:[0d,-1d,0d],Passengers:[{id:falling_block,Time:1,Block:minecraft:activator_rail,Passengers:[{id:commandblock_minecart,Command:blockdata ~ ~-2 ~ {auto:0b,Command:""}},{id:commandblock_minecart,Command:scoreboard objectives add count dummy 记数},{id:commandblock_minecart,Command:"kill @e[tag=boatmark]"},{id:commandblock_minecart,Command:setblock ~2 ~23 ~0 chain_command_block 9 replace {Command:scoreboard players reset countb count,auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~22 ~0 chain_command_block 9 replace {Command:scoreboard players reset counta count,auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~21 ~0 chain_command_block 9 replace {Command:"execute @e[name=mark,tag=boatmark] ~ ~ ~ blockdata ~ ~ ~ {auto:0b}",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~20 ~0 chain_command_block 1 replace {Command:scoreboard players test countb count 45 100,auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~19 ~0 chain_command_block 1 replace {Command:"/tp @e[name=boat_holder,tag=2a] @e[name=boat_holder,tag=2b]",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~18 ~0 chain_command_block 1 replace {Command:"/tp @e[name=boat_holder,tag=1a] @e[name=boat_holder,tag=1b]",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~17 ~0 chain_command_block 1 replace {Command:"/tp @e[name=boat_holder,tag=2b] @e[name=py,type=snowball,tag=2b]",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~16 ~0 chain_command_block 1 replace {Command:"/tp @e[name=boat_holder,tag=1b] @e[name=py,type=snowball,tag=1b]",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~15 ~0 chain_command_block 1 replace {Command:scoreboard players add countb count 1,auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~14 ~0 chain_command_block 1 replace {Command:scoreboard players remove counta count 45,auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~13 ~0 command_block 1 replace {Command:blockdata ~ ~ ~ {auto:0b}}},{id:commandblock_minecart,Command:setblock ~2 ~12 ~0 chain_command_block 9 replace {Command:blockdata ~ ~1 ~ {auto:1b},auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~11 ~0 chain_command_block 1 replace {Command:scoreboard players test counta count 45 100,auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~10 ~0 chain_command_block 1 replace {Command:"/tp @e[name=boat_holder,tag=2a] @e[name=py,type=snowball,tag=2a]",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~9 ~0 chain_command_block 1 replace {Command:"/tp @e[name=boat_holder,tag=1a] @e[name=py,type=snowball,tag=1a]",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~8 ~0 chain_command_block 1 replace {Command:"/execute @e[name=boat_holder,tag=2a] ~ ~ ~ clone 41 118 231 41 118 231 ~ 139 ~",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~7 ~0 chain_command_block 1 replace {Command:"/execute @e[name=boat_holder,tag=1a] ~ ~ ~ clone ~ 114 ~ ~ 114 ~ 41 118 231",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~5 ~0 chain_command_block 1 replace {Command:"tp @e[type=boat,name=boat,tag=2] ~ ~ ~ ~36 ~",auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~4 ~0 chain_command_block 1 replace {Command:scoreboard players set countb count 0,auto:1b}},{id:commandblock_minecart,Command:setblock ~2 ~3 ~0 chain_command_block 1 replace {Command:scoreboard players set counta count 0,auto:1b}},{id:commandblock_minecart,Command:"setblock ~2 ~2 ~0 chain_command_block 1 replace {Command:"/summon snowball 41 141 231 {NoGravity:1b,CustomName:\\"boat_holder\\",Tags:[\\"boat\\",\\"2b\\"],Passengers:[{Rotation:[0:180.0f,1:0.0f],id:boat,CustomName:\\"boat\\",Tags:[\\"boat\\",\\"2b\\",\\"2\\"],Passengers:[{id:snowball,CustomName:\\"px\\",Tags:[\\"boat\\",\\"2b\\"]},{id:snowball,CustomName:\\"py\\",Tags:[\\"boat\\",\\"2b\\"]}]}]}",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~1 ~0 chain_command_block 1 replace {Command:"/summon snowball 41 141 231 {NoGravity:1b,CustomName:\\"boat_holder\\",Tags:[\\"boat\\",\\"2a\\"],Passengers:[{Rotation:[0:90.0f,1:0.0f],id:boat,CustomName:\\"boat\\",Tags:[\\"boat\\",\\"2a\\",\\"2\\"],Passengers:[{id:snowball,CustomName:\\"px\\",Tags:[\\"boat\\",\\"2a\\"]},{id:snowball,CustomName:\\"py\\",Tags:[\\"boat\\",\\"2a\\"]}]}]}",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~0 ~0 chain_command_block 1 replace {Command:"/summon snowball 41 116 231 {NoGravity:1b,CustomName:\\"boat_holder\\",Tags:[\\"boat\\",\\"1b\\"],Passengers:[{Rotation:[0:180.0f,1:0.0f],id:boat,CustomName:\\"boat\\",Tags:[\\"boat\\",\\"1b\\"],Passengers:[{id:snowball,CustomName:\\"px\\",Tags:[\\"boat\\",\\"1b\\"]},{id:snowball,CustomName:\\"py\\",Tags:[\\"boat\\",\\"1b\\"]}]}]}",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~-1 ~0 command_block 1 replace {Command:"/summon snowball 41 116 231 {NoGravity:1b,CustomName:\\"boat_holder\\",Tags:[\\"boat\\",\\"1a\\"],Passengers:[{Rotation:[0:90.0f,1:0.0f],id:boat,CustomName:\\"boat\\",Tags:[\\"boat\\",\\"1a\\"],Passengers:[{id:snowball,CustomName:\\"px\\",Tags:[\\"boat\\",\\"1a\\"]},{id:snowball,CustomName:\\"py\\",Tags:[\\"boat\\",\\"1a\\"]}]}]}"}"},{id:commandblock_minecart,Command:setblock ~2 ~-2 ~0 command_block 1 replace {Command:"kill @e[tag=boat]"}},{id:commandblock_minecart,Command:setblock ~2 ~6 ~0 repeating_command_block 1 replace {Command:scoreboard players add counta count 1}},{id:commandblock_minecart,Command:"summon area_effect_cloud ~2 ~6 ~0 {CustomName:"mark",Duration:2147483647,Tags:["boatmark"]}"},{id:commandblock_minecart,Command:setblock ~ ~1 ~ command_block 0 replace {auto:1b,Command:fill ~ ~ ~ ~ ~-2 ~ air}},{id:commandblock_minecart,Command:kill @e[type=commandblock_minecart,r=1]}]}]}




另外:用单平面的转换方法去转换立体建筑
【思路】:利用高频和“中介区”并加上tp与记数器,花费一些时间,立体的东西也可以有转换平面那样的效果

存档、图片与pcb
图:http://pan.baidu.com/s/1gfObHlTpcb与存档:http://pan.baidu.com/s/1pLrXwrL


完。寒假第一帖(也maybe寒假最后一贴)


at:@chyx @FHC红石 @langyo @12356789asdfg @lrf8643 @Deing @ddung @雷鸣·翾鹗 @MsYqgzt @乾.坤 @-ZCH-


来自群组: The Minecraft LoverThe Command's Power



LRual
最近膝盖不疼了
但总感觉下巴要掉

ruhuasiyu
你搞得这样玩意越来越不明白了……

pca006132
虽然说还是不太懂
然而新人手册还是收录了,并且将会加入到本周电邮的"本周焦点"

//如果不希望被收录可以联系我,tml交流群或者cbl新手群或者tcp交流群都能找到我的

机器人WBW
呃,重新排了个版,加了目录,现在看应该更好了

晴路卡
能单tick就厉害了2333

chyx
我查到了这个文章 似乎对你有用 贴在这里了
http://www.matrix67.com/blog/archives/5453#more-5453

雪-ices
膜拜大佬awa

第一页 上一页 下一页 最后一页