n芒星(nは奇数) を描くプログラム を作りました。
n芒星(nは奇数) を描くプログラムのソースコードはこちら です。
import turtle import math #---------------角度の単位を度からラジアンに変換する関数------------ def deg2rad(degrees): return degrees * (math.pi/180) #--------------- drawStarfive() の 引数-------------------- # ttl: turtleオブジェクト # (x,y): 座標 # n: 線の数 # radius: 外接円の半径 # angle: 回転してる角度(左右対称の状態を基準に反時計回りに何度回転してるか) #--------------- 正n芒星を描く関数(nは奇数)------------------ def drawStarN(ttl, centerX, centerY, n, radius, angle=0): #----------角度や線の長さを設定---------------- in_angle = 180/n # 内角 ex_angle = 180 - in_angle # 外角 length = 2 * math.cos(deg2rad(in_angle/2)) * radius # 星の線の長さ initial_heading = angle + 90 + ex_angle + in_angle/2 # 最初に線を引く方向 rad = deg2rad(angle + 90) # 一番最初に描き始める点がある角度。単位はラジアン x = centerX + radius * math.cos(rad) # 最初に描き始める頂点のx座標 y = centerY + radius * math.sin(rad) # # 最初に描き始める頂点のy座標 initial_point = (x, y) # 最初に描き始める頂点 #----------星を描く準備----------------- ttl.penup() # ペンを上げる(移動中に線が引かれない) ttl.goto(initial_point) # 星の頂点に移動(回転しないなら一番上の点) ttl.setheading(initial_heading) # 最初の進行方向を向く ttl.pendown() # ペンを下ろす(移動中に線が引かれるようになる) #----------星を描く--------- for i in range(n): ttl.forward(length) ttl.left(ex_angle) #----------設定----------- scr = turtle.Screen() # 画面を作る ttl = turtle.Turtle() #カーソルを作る ttl.speed(10) # 絵を描くスピードを設定する #-----------正 i 芒星(i=3,5,7,9,11) を描く--------- for i in range(3, 11, 2): drawStarN(ttl, centerX=0, centerY=0, n=i, radius=200, angle=0) ttl.clear() # 描いた図形を消す ttl.reset() # 一番最初の状態に戻る(カーソルを中心に戻らせる) ttl.write("Click here to exit", align="center", font=("Arial", 30, "normal")) ttl.hideturtle() # カーソルを見えないようにする scr.exitonclick() # クリックしたら終了する
0 件のコメント:
コメントを投稿
投稿されたコメントは承認後に公開されます。