topologycraft吧 关注:883贴子:21,819
  • 5回复贴,共1

求堆叠村庄原理(怎么将几个村庄

只看楼主收藏回复

求堆叠村庄原理(怎么将几个村庄聚集在一起?)


来自Android客户端1楼2017-07-28 23:48回复
    村庄机制,村民控门范围,门的优先顺序来决定。


    IP属地:云南来自Android客户端2楼2017-07-29 16:12
    收起回复
      优先顺序:门会加入最近的村庄


      IP属地:美国来自iPhone客户端3楼2017-07-30 11:53
      回复
        最近的门会加入村庄 村庄的中心以所有门的坐标中心决定


        IP属地:福建4楼2017-07-30 17:39
        回复
          村庄堆叠原理
          1.当在这个村庄中心64格半径(不包括村庄中心所在的方块)的范围内(此范围是一个球形),
          再生成一个村庄时,新的村庄,将加入这个村庄。并且,村庄中心移动到这两个村庄的中点
          那么这个中心点是怎么算的呢?
          公式:
          x=(x1+x2)/2,
          y=(y1+y2)/2,
          z=(z1+z2)/2
          多个门的村庄中心算法:
          x=(x1+x2+x3+.....xn)/n
          y=(y1+y2+y3+....yn)/n
          z=(z1+z2+z3+.....zn)/n
          而64格外的,将形成新的村庄
          正常情况下,一个村庄的范围是半径32。然而,这个半径并不是固定的。当村庄中任意两扇门的距离>32时,
          村庄范围半径将变成村庄中心到最远的门的距离,这将影响到新形成的村庄是否加入的距离因此村庄归属的
          判定公式是:
          (村庄半径+32)为半径的球形范围内,所形成的村庄,将加入这个村庄。以外的将形成新的村庄
          2.假设:
          西边门的坐标为x1
          放门的位置的坐标为x2
          新的村庄中心的坐标为x3
          所需要放的门的数量为n
          n=(x3-x1)/(x2-x3)
          我们需要一个堆叠方案,用于确定村庄另一半的距离
          假设DE,GH,分别为村庄的一半11扇门,距离11
          F为村庄的中心点
          A点为新村庄成立的点,它距离村庄中心F,距离必须>64
          B点为中转点,AB之间的距离必须小于BF,否则B点会加入F点的村庄(1.8村庄就近加入原则)
          C点为中转点2,BC之间的距离必须<CF。否则C村会加入F(同上)
          CD之间的距离至少为5(为控制门延伸的五格控制了CD的最小距离)
          EF之间的距离必须>CE(否则E点的门会加入F)
          而CE最小为16(DE=11,CD最小为5)
          因此得出EF必须>16
          村庄半径取决于村庄距离最远的两个门的距离,<64则村庄半径为32,>64,则村庄半径=离村庄中心最远的门,到村庄中心的距离
          而F的半径,我们已经确定,是32,只要IF距离>64,那么I是不会加入F村庄的
          现在,我们只要把C的半径扩大到 >(CF+32)
          并且,CI的距离<CF+32+32
          就能实现I加入C,而不加入F,CI有交点,而IF无交点,超出加入距离。
          由于AC>64(F的直径),C的半径变成AC的距离,而不是32
          现在,我们回到游戏中,在距离C点64格的地方放个门(A点)
          我们要把A村庄的中心转移到C点,中间用B点借一次力
          在AF的中点往A方向1格的地方建第2个村庄(为了让他离A更近,成立后,加入A,而不加入F)
          也就是说AB+1=BF
          我们发现,B村庄加入A后,村庄中心移动到AB的中间
          而这个村庄中心,离D的距离>DF
          这里,我们需要在B处添加门,把村庄中心往B的方向拉
          在AB上找出一个点,距离D的距离<DF(数格子总会吧)
          假设,我们找到的点坐标为y,A坐标点为y1,B坐标点为y2,我们要加的门的数量为n
          计算公式:
          n=(y1-y) / (y-y2)
          经计算,加3个门足够了。为了保证村庄中心在中心线上,我们一边放两个
          当然,大家做的不一定是这样。具体按公式计算
          再通过上面的公式,计算出,要把村庄中心拉到C点,所需要的门的数量
          此时,我们发现村庄范围被我们扩大到AC为半径
          将第1排的村庄的门,全变成有效门,于是加入了C
          回到这张图,现在,我们需要在离F 64以外的地方,建立 I 村庄,因为我们不能让 I 加入F
          并且,要把村庄中心拉到FG之间,用于保证GH处的门,不会加入F,而是加入新成立的村庄
          在离F 65格的地方建立 I 村庄
          我们要保证,I 村庄在建立的时候,不会加入F村。因此距离必须大于64
          细心的同学会发现,I 村庄后面两排门的距离有可能加不到F村
          当 I 村的排门加入C村时,会把村庄中心往 I 的方向拉动,
          此时,后两排门距离也就够了,并且一起加入C村
          具体要多少数量的门,才能把村庄中心拉到FG之间,确保GH处的门能够加入C村,而不加入F村,参看53楼计算公式
          我们需要6个村民,来控制村庄的生成和失效
          在村庄的形成中(7楼),我们提到,村民脚下6格,头上1格,水平方向 东南15 西北16,的任意方块上放门,就能形成村庄。利用活塞推动村民高度,来使村庄失效,从而达到堆叠的目的。
          并且要注意,一个村民,控制一个村庄,互不影响。
          从图中,我们可以看到,似乎C村的村民,会影响到DE处的村庄
          但是,DE处的村庄我们是通过控制门的有效性,来使村庄成立的,所以并不影响
          控制DE处村庄的村民,定要离C村足够的距离(不能影响到C村),并且能够控制到DE处的所有门(刚好32个,控制范围内)
          这就要注意村民控制门的水平范围规则(东南15,西北16)
          同理,控制GH处门的村民,也不能影响到 I 村,I 村处的村民对GH处的门,并无影响
          大致如下:
          AB=BF-1
          BC=
          CD=5
          DE=11
          EF=17
          FG=16
          GH=11
          HI=
          FI=65
          AC>64
          DF=15
          BD>DF
          CF=31
          FH=32


          IP属地:湖北7楼2018-11-15 19:32
          回复