Minecraft PI editionでプラネタリウムを作ります。
準備するもの |
|
まずは三角関数について
半径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) ... >>>
z軸も同じように繰り返し処理すれば、半球の出来上がりです。
真っ暗なので良く見えません。半径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
コメント