购买正版 电脑 · 游戏周边

单机游戏 > 我的世界OL专区 > 我的世界OL攻略 > 我的世界牛人用py解决盔甲架的角度的问题

我的世界牛人用py解决盔甲架的角度的问题

2017-04-22 来源:游戏园 作者:3F

  我的世界牛人尝试用py解决盔甲架的角度的问题。那下面给大家分享的则是我的世界玩家关于盔甲架角度问题的尝试方法哦~那有感兴趣的玩家不妨进来看看下面的介绍吧!

  为了解决盔甲架的方向不好解决的问题 我尝试用py来算出来盔甲架的NBT由于我是py萌新 数学学渣 这个一定有错误 请各位大触不要留情面的指出

  输入的ABC是这个部件的木杆指向的方向 (比如1 1 1或者2 2 2 是沿着体对角线方向 -1 -1 -1 n是和那俩相反的方向)t是指向这个方向之后再绕着轴旋转的弧度

  from math import *

  def armorstand (A,B,C,t):

  a=C*C+A*A

  b=C*C+B*B

  c=A*B

  l=sqrt(A*A+B*B+C*C)

  if C==0:

  if A==0:

  x=cos(t)

  y=0

  z=sin(t)*((B<0)*2-1)

  else:

  x=-sin(t)*A*B*sqrt(B*B/(A*A)+1)/(A*A+B*B)

  y=sin(t)/sqrt(1+B*B/(A*A))

  z=sqrt(max(1-x*x-y*y,0))*(((-A*cos(t))>0)*2-1)

  else:

  x=C*cos(t)/sqrt(a) - (c/a)*C*sin(t)/sqrt(b-c*c/a)

  y=C*sin(t)/sqrt(b-c*c/a)

  z=(A*x+B*y)/(-C)

  thz=pi/2 if x==0 else -atan(y/x)

  Az=(A*cos(thz)-B*sin(thz))/l

  Bz=(B*cos(thz)+A*sin(thz))/l

  Cz=C/l

  d=x*cos(thz)-y*sin(thz)

  f=z

  thy=acos(d)*(2*(f>0)-1)

  thx=-acos(Bz)*(2*((Az*f-Cz*d)>0)-1)

  return 180*thx/pi,180*thy/pi,180*thz/pi

  输出就是盔甲架的NBT了

  可以这样来获得需要的指令

  def armorstandcommand(a,b,c,d):

  return "/summon Armor_Stand ~0 ~1 ~0 {Pose:{Head:[%.8fF,%.8fF,%.8fF]}}n" % narmorstand(a,b,c,d)

  为了让角度处于(-180,180] 我在测试时用了这个。需要者自取@MsYqgzt

  def a(x):

  return x+floor(0.5-x/360)*360

  效果图:

  A=B=C=1和A=B=C=-1,t间隔pi/6

  PS:在此非常感谢我的世界MCBBS玩家chyx的分享。


我的世界OL 扫雷难度 3D画面

Minecraft Online
  • 类型其他游戏
  • 发售2016年09月24日
  • 语言中文
  • 平台PC
  • 研发Mojang
  • 运营网易
《我的世界》是由Mojang研发的一款高自由度像素风格的沙盒游戏。

暂无促销活动

火爆开服更多+

thisLineHeights20

新闻更多+

thisLineHeights20

攻略更多+