
在「我的世界」中如何快速建立一個金字塔呢?觀察金字塔會發現,金字塔是很嚴整的幾何體,所以通過操縱數學函數是可以完美建造出來的。

金字塔可以被視為由四個全等的三角面共用一個頂點組成。所以,在麥塊世界中建一個金字塔等同於設定四個全等的三角面,且這四個三角面共用一個點(三點成一面嗎)。
Python是十分強大的程式語言,對數學函數支持的非常好,因此可以用python語言來完成這個金字塔的建造。
對問題進行逆向推理
金字塔是由四個全等三角面構成,所以需要依次構造出四個三角面mcdrawing.drawFace(trianglePoints, True, block.SANDSTONE.id)
上面是Python裡用來畫「面」的函數,輸入的是構成一個面的頂點數組,以及用來畫面的材料(這裡使用的是砂巖)。其中頂點坐標數組需要其他函數計算出來。
每一個三角面需要三個頂點坐標,所以需要一數據結構保存三個頂點坐標數據trianglePoints = []
trianglePoints.append(minecraft.Vec3(point1X, pyramidMiddle.y, point1Z))
trianglePoints.append(minecraft.Vec3(point2X, pyramidMiddle.y, point2Z))
trianglePoints.append(minecraft.Vec3(pyramidMiddle.x,pyramidMiddle.y + PYRAMID_HEIGHT,pyramidMiddle.z))
上面是將三角面的三個頂點坐標分別構成向量,並放入一個數組當中的相關代碼。每一個頂點用向量進行表示,三個頂點便是三個向量,三個向量構成一個數組,用來表示一個三角面。
三角面的三個頂點,除了一個公用的頂點坐標是已知外,需要另外計算兩個點的坐標
根據投影學,四個全等三角形就是對一個圓進行四等分。只需要計算出其在圓上的坐標即可。詳細解說可參看上一篇文章:用Python在「我的世界」裡建一個既能看時間又能當地標的大鐘。這文章裡詳細說明了如何使用三角函數,根據不同的角度計算出一個點在圓上的坐標。
小節
上面便是完整的逆推過程。最後再總結一遍:金字塔由四個全等三角面組成;每一三角面由三個頂點向量數組構成;每一向量由X,Y,Z坐標構成;根據三角函數計算出X,Y,Z坐標;一個一個面依次畫出。OK,打完收工。