三角関数を使って五角形を表示しよう
今回は三角関数を使って、五角形を表示してみましょう。
以下の図のように、頂点Aと頂点Bの座標から五角形の高さを求めて、五角形を画面の中央に配置します。
頂点Bの角度は、頂点Aが90度として、そこから144度(72度+72度)ずらした位置になります。
五角形を表示するプログラム
五角形を表示するプログラムは、以下のようになります。
重心から頂点Aの長さに、三角関数のサインで計算した頂点BのY座標を足して、五角形の高さを求めています。
五角形の各頂点は、正五角形になるように72度ずつずらしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
### インポート import math import pygame from pygame.locals import * ### 定数 WIDTH = 640 # 幅 HEIGHT = 400 # 高さ SIZE = 160 # 重心から頂点までの長さ COG_X = int(WIDTH/2) # 重心X座標 COG_Y = int((HEIGHT-math.fabs(math.sin(math.radians(234)))*SIZE+SIZE)/2) # 重心Y座標 ### モジュール初期化 pygame.init() ### 画面設定 surface = pygame.display.set_mode((WIDTH,HEIGHT)) ### 五角形座標取得 apex_a = COG_X-int(math.cos(math.radians(90)) *SIZE), COG_Y-int(math.sin(math.radians(90)) *SIZE) apex_b = COG_X-int(math.cos(math.radians(162))*SIZE), COG_Y-int(math.sin(math.radians(162))*SIZE) apex_c = COG_X-int(math.cos(math.radians(234))*SIZE), COG_Y-int(math.sin(math.radians(234))*SIZE) apex_d = COG_X-int(math.cos(math.radians(306))*SIZE), COG_Y-int(math.sin(math.radians(306))*SIZE) apex_e = COG_X-int(math.cos(math.radians(18)) *SIZE), COG_Y-int(math.sin(math.radians(18)) *SIZE) ### 五角形表示 pygame.draw.polygon(surface, (255,255,255), (apex_a,apex_b,apex_c,apex_d,apex_e)) ### 画面更新 pygame.display.update() ### 無限ループ while True: ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: break else: continue ### whileループ終了 break ### 終了処理 pygame.quit() |
プログラムを実行すると、画面に五角形が表示されます。