Minecraft PI EDでプラネタリウム

三角関数

Minecraft PI editionでプラネタリウムを作ります。

準備するもの
  • Raspberry Pi(確認環境はPi 2)
  • 端末ウィンドウ(ターミナルソフト)
  • Minecraft Pi ED

まずは三角関数について
sincos

半径rは、あまり遠すぎると見えなくなるので9ブロックぐらいにします。
円弧を描くので、角度が0度の時は、(x,y)=(9,0)になるし、角度が90度の時は、(x,y)=(0,9)になりますが、
x,yを求める式はこうなります。
x = 半径r ☓ cos(角度θ)
y = 半径r ☓ sin(角度θ)

pythonの三角関数は、角度の単位がラジアンですので、半円を描きたい時は、
0〜180° = 0〜π

pythonシェルを使って計算してみます。

~$ python
>>> r = 9
>>> r * math.cos(math.pi/10*0)
9.0
>>> r * math.cos(math.pi/10*10)
-9.0
>>> r * math.cos(math.pi/3)
4.500000000000001

では、半円を描いてみましょう。

~$ python
>>> import minecraft,math
>>> mc=minecraft.Minecraft.create()
>>> mc.setBlocks(-127,0,-127,127,50,127, 0,0)
>>> mc.player.setPos(0,0,0)
>>> r=9
>>> d=60
>>> for i in range(0,d+1):
...   rad=math.pi/d*i
...   y=round(r*math.sin(rad))
...   x=round(r*math.cos(rad))
...   mc.setBlock(x,y,0, 1,0)
... 
>>> 

mcpi-half-circle

z軸も同じように繰り返し処理すれば、半球の出来上がりです。

mcpi-half-sphere

真っ暗なので良く見えません。半径9でなく、もっと大きくしても大丈夫そうです。最終的に以下のように(半径32ブロック)しました。

~$ python
>>> import minecraft
>>> import sys,math
>>> mc=minecraft.Minecraft.create()
>>> mc.setBlocks(-127,0,-127, 127,50,127, 0,0)
>>> mc.player.setPos(0,0,0)
>>> r = 32
>>> d = 280
>>> for i_b in range(0,d+1):
...   rad_b=math.pi/d * i_b
...   for i_a in range(0,d+1):
...     rad_a=math.pi/d * i_a
...     y = round(r * math.sin(rad_a))
...     rx = round(r * math.cos(rad_a))
...     x = round(rx * math.cos(rad_b))
...     z = round(rx * math.sin(rad_b))
...     mc.setBlock(x,y,z, 1,0)

後は、プレイヤーを操作して、天井のここだ! と思う位置に3つ穴を空けるだけです。

穴あけの動画

mcpi planetarium

コメント

タイトルとURLをコピーしました