我的世界曲线算法研究 怎么在MC中造曲线

时间:2017-03-31 来源:88130安卓下载 作者:佚名

  我的世界曲线算法研究 怎么在MC中造曲线。今天给大家带来的这个是我的世界里面的一位大神分享的在MC中造曲线的方法吧!对曲线感兴趣的玩家不妨进来看看他是怎么算的哦~

  游戏园我的世界官方群:325049520 二群:256070479 欢迎各路喜爱我的世界的小伙伴们加入讨论!

  玩服务器的小伙伴们可以加入:464651602 群一起联机玩游戏哦!

  如果你有心仪的作品或者心得分享的话,欢迎来游戏园投稿,大家可以点击>>>投稿<<<进行投稿哦~ 有奖品哦~

  传送门:我的世界1.9更新内容汇总

  首先感谢雷鸣·翾鹗 ,从他那里看见了两张图片(听他说是百科上找的),才让我终于明白曲线的算法

  附上原理:

  两张图片上来,曲线原理瞬间就懂了(至少我是这样),关键就在于数据的运算,并且还要在MC里实现

  (前方高能,数学渣勿看)

  把图看懂&运算数据

  我把整个移动的过程分为50次,设当前为第n次运动

  从P0开始,最终运动到P2的动点,我定为动点p0~2

  某两点的相对坐标我用“—>”箭头连接来表示(如P1在(1,1,1),P2在(2,3,1),P1—>P2就是(~1,~2,~0))

  P0—>P1我简化为a,P1—>P2我简化为b,以此类推

  两点定直线

  如何理解一条直线也同样可以分成50个部分,动点p0~1就在(n/50)a的位置,动点p0~1最终会画出一条直线

  运算过程

  p0~1占a的n/50

  P1—>p0~1

  (n/50)a

  三点定一次曲线

  如何理解

  如第一个动图,动点p0~1与动点p1~2会再形成一条直线,p0~2就会在此直线上运动

  运算过程

  P0—>p0~1

  =(n/50)a

  P1—>p1~2

  =(n/50)b

  P0—>p1~2

  =P1—>P2—>p1~2

  =a+(n/50)b

  p0~1—>p1~2

  =(P0—>p1~2)-(P0—>p0~1)

  =[a+(n/50)b]-(n/50)a

  =a+(n/50)(-a+b)

  p0~1—>p0~2

  =(n/50)(p0~1—>p1~2)

  =(n/50)[a+(n/50)(-a+b)]

  =(n/50)a+(n/50)2(-a+b)

  P0—>p0~2

  =P0—>p0~1—>p0~2

  =(n/50)(2a)+(n/50)2(-a+b)

  P1—>p0~2

  (n/50)(2a)+(n/50)2(-a+b)

  多点定曲线

  如何理解

  如第二个动图,会有不少的动点动线,实际上你可以把“四点定二次曲线”看做两个“三点定一次曲线”所形成的动点连接,再次形成动线,上面再找动点

  我的世界曲线算法研究 怎么在MC中造曲线。今天给大家带来的这个是我的世界里面的一位大神分享的在MC中造曲线的方法吧!对曲线感兴趣的玩家不妨进来看看他是怎么算的哦~

  游戏园我的世界官方群:325049520 二群:256070479 欢迎各路喜爱我的世界的小伙伴们加入讨论!

  玩服务器的小伙伴们可以加入:464651602 群一起联机玩游戏哦!

  如果你有心仪的作品或者心得分享的话,欢迎来游戏园投稿,大家可以点击>>>投稿<<<进行投稿哦~ 有奖品哦~

  传送门:我的世界1.9更新内容汇总

  首先感谢雷鸣·翾鹗 ,从他那里看见了两张图片(听他说是百科上找的),才让我终于明白曲线的算法

  附上原理:

  两张图片上来,曲线原理瞬间就懂了(至少我是这样),关键就在于数据的运算,并且还要在MC里实现

  (前方高能,数学渣勿看)

  把图看懂&运算数据

  我把整个移动的过程分为50次,设当前为第n次运动

  从P0开始,最终运动到P2的动点,我定为动点p0~2

  某两点的相对坐标我用“—>”箭头连接来表示(如P1在(1,1,1),P2在(2,3,1),P1—>P2就是(~1,~2,~0))

  P0—>P1我简化为a,P1—>P2我简化为b,以此类推

  两点定直线

  如何理解一条直线也同样可以分成50个部分,动点p0~1就在(n/50)a的位置,动点p0~1最终会画出一条直线

  运算过程

  p0~1占a的n/50

  P1—>p0~1

  (n/50)a

  三点定一次曲线

  如何理解

  如第一个动图,动点p0~1与动点p1~2会再形成一条直线,p0~2就会在此直线上运动

  运算过程

  P0—>p0~1

  =(n/50)a

  P1—>p1~2

  =(n/50)b

  P0—>p1~2

  =P1—>P2—>p1~2

  =a+(n/50)b

  p0~1—>p1~2

  =(P0—>p1~2)-(P0—>p0~1)

  =[a+(n/50)b]-(n/50)a

  =a+(n/50)(-a+b)

  p0~1—>p0~2

  =(n/50)(p0~1—>p1~2)

  =(n/50)[a+(n/50)(-a+b)]

  =(n/50)a+(n/50)2(-a+b)

  P0—>p0~2

  =P0—>p0~1—>p0~2

  =(n/50)(2a)+(n/50)2(-a+b)

  P1—>p0~2

  (n/50)(2a)+(n/50)2(-a+b)

  多点定曲线

  如何理解

  如第二个动图,会有不少的动点动线,实际上你可以把“四点定二次曲线”看做两个“三点定一次曲线”所形成的动点连接,再次形成动线,上面再找动点

  运算过程

  这里得讲一个“万用公式”了

  P0—>p0~x

  =(n/50)[P0—>p1~x-P0—>p0~(x-1)]+P0—>p0~(x-1)

  两动点到P1的距离相减,就可以得到这两动点的相对坐标,此相对坐标再乘(n/50)便可又出现一个动点,然后又算此动点到P0的相对坐标……自己理解就好了

  P1—>p0~x

  (n/50)[P0—>p1~x-P0—>p0~(x-1)]+P0—>p0~(x-1)

  其中“四点定二次曲线”为

  P0—>p0~3

  =(n/50)(3a)+(n/50)2(-3a+3b)+(n/50)3(a-2b+c)

  关于数据的运算,这里有一个简单的表格,利用函数关系算各个需要的值(输入P1,P2等坐标的值便可以算出一些东西),希望可以帮到各位

  简单的曲线运算表格存档下载链接: (密码:5hqd)

  在MC中实现(手动版)

  好的,大家应该都知道有计分板这个东西,它可以进行各种比较简单的运算,算平方什么的也是“杠杠的”

  然而计分板那些超复杂的东西我们都交给自动版(然而现在——2016年3月11日——还没有出来),手动版我们有手动版的优势(我会尽量少用计分板)

  上面已经讲过,一次斜线的P0—>p0~2位置的运算是:

  (n/50)(2a)+(n/50)2(-a+b)

  当然,在这里就需要变一下:

  n(2a)/50+n2(-a+b)/2500

  所以我们现在需要算的是a/25与(-a+b)/2500

  至于n与n2,我们只需要用execute便可,当然也需要计分板定次数

  示范程序:(其中:a=~7,~6,~-10;b=~3,~-5,~7)

  首先创建一个计分板,我命名为jihe_shiyan

  /scoreboard objectives add jihe_shiyan dummy 几何——实验

  然后是程序,我从左往右讲解(注意开启程序的顺序是:1.激活脉冲命令方块;2.开启紫色高频命令方块的auto自激活):

  重置:

  第一个(脉冲型):用于重置huihe分数(50分)

  /scoreboard players set huihe jihe_shiyan 50

  生成:

  第二个(高频):在指定位置生成药水云

  summon AreaEffectCloud 627 4 565 {CustomName:"a",CustomNameVisible:1,Duration:2100000000}

  次数判定:

  第三个(连锁):减去huihe的一分

  /scoreboard players remove huihe jihe_shiyan 1

  第四个(连锁):检查huihe的分数

  /scoreboard players test huihe jihe_shiyan -100000 0

  第五个(条件连锁):(若上一个成功)关闭高频的auto

  /blockdata ~ ~ ~-3 {auto:0}

  位移:

  这里就到了最关键的部分了,运算出来的数据现在就要用上了

  第六个(连锁):让所有“b”药水云都把“a”药水云tp个(a/25)(以此做到n的效果)

  原本格式是这样:

  /execute @e[name=b] ~ ~ ~ tp @e[name=a] (a/25)

  我的就是:

  /execute @e[name=b] ~ ~ ~ tp @e[name=a] ~0.28 ~0.24 ~-0.4

  第七个(连锁):让所有“b”都让所有的“b”把“a”tp个((-a+b)/2500)(n2就是这样做到的)

  原本的格式:

  /execute @e[name=b] ~ ~ ~ /execute @e[name=b] ~ ~ ~ tp @e[name=a] ((-a+b)/2500)

  我的就是:

  /execute @e[name=b] ~ ~ ~ /execute @e[name=b] ~ ~ ~ tp @e[name=a] ~-0.0016 ~-0.0044 ~0.0068

  别看数字虽小,与n2相乘后的积也是不小的

  a变b:

  基本就是把这个生成出来的“a”变成“b”,所以才做到了“n”的变量效果

  第八个(连锁):把“a”更名为“b”

  /entitydata @e[name=a] {CustomName:"b"}

  (用这种方法的缺点就是非常慢,大家要有耐心……我中途还常常卡出去。另外会发现名字没动,多重进几遍就会好了,曲线还是挺标准)

  (很可惜,最后的效果图我发现坏掉了,只留下二次斜线的效果)

  二次斜线的方法大家可以举一反三:

  公式是下面这个,自己研究去吧

  P0—>p0~3=(n/50)(3a)+(n/50)2(-3a+3b)+(n/50)3(a-2b+c)

  当然最大的坑始终是它很慢,我等了几分钟才出一条曲线,我决定在自动版中解决这一问题

  PS:在此非常感谢我的世界玩家林扬骐的分享。

  以上就是我的世界曲线算法研究 怎么在MC中造曲线。更多精彩尽在游戏园我的世界专区。

  相关攻略推荐:

  我的世界1.9.1盔甲防御值及韧性属性详解

  关于我的世界启动器会下载错误的1.9版本问题

  我的世界1.9.1-pre3版本发布 修复寻路代码导致的崩溃

  我的世界1.9攻击技巧 左右手都动起来

热门搜索

手游排行榜

  • 最新排行
  • 最热排行
  • 评分最高