3
現在我有一個叫做Hexagon(x,y,n)的函數,它將在python窗口中繪製一個以(x,y)爲中心且邊長爲n的六邊形。在Python中繪製六邊形鑲嵌動畫
我的目標是繪製鑲嵌動畫將在屏幕中心畫陸續六角一個接一個展開一個(如右圖我這裏附http://s7.postimage.org/lu6qqq2a3/Tes.jpg)。
我正在尋找解決此問題的算法。編程新手,我發現很難做到這一點。
謝謝!
現在我有一個叫做Hexagon(x,y,n)的函數,它將在python窗口中繪製一個以(x,y)爲中心且邊長爲n的六邊形。在Python中繪製六邊形鑲嵌動畫
我的目標是繪製鑲嵌動畫將在屏幕中心畫陸續六角一個接一個展開一個(如右圖我這裏附http://s7.postimage.org/lu6qqq2a3/Tes.jpg)。
我正在尋找解決此問題的算法。編程新手,我發現很難做到這一點。
謝謝!
對於六邊形的環可以定義一個函數是這樣的:
def HexagonRing(x,y,n,r):
dc = n*math.sqrt(3) # distance between to neighbouring hexagon centers
xc,yc = x,y-r*dC# hexagon center of one before first hexagon (=last hexagon)
dx,dy = -dc*math.sqrt(3)/2,dc/2 # direction vector to next hexagon center
for i in range(0,6):
# draw r hexagons in line
for j in range(0,r):
xc,yc = xc+dx,yc+dy
Hexagon(xc,yc,n)
# rotate direction vector by 60°
dx,dy = (math.cos(math.pi/3)*dx+math.sin(math.pi/3)*dy,
-math.sin(math.pi/3)*dx+math.cos(math.pi/3)*dy)
那麼可以在其他以後畫一個圈:
Hexagon(0,0,10)
HexagonRing(0,0,10,1)
HexagonRing(0,0,10,2)
HexagonRing(0,0,10,3)
非常感謝!這非常有幫助。 – user2063057 2013-02-17 23:31:50