課題
六芒星(hexagram)を描くメソッドを定義して,それを利用して絵を描画するプログラムを作成して提出してください.
- 以下に示す仕様にしたがって,六芒星を描くメソッドhexagram(cx,cy,r,theta)を定義してください
- (同じプログラムで)六芒星を含むシーンを描いてください
- アニメーションやインタラクションの機能は必ずしも実現しなくて構いません.
六芒星(hexagram)
六芒星(hexagram)は正六角形の頂点を一つおきにつなぐ対角線をすべてひいたときに現れます.
正六角形の頂点を一つおきにつなぐ対角線をすべてひくと, それらの交点として12個の点が得られます. それらのうちの1つを選んで, その点を出発して,対角線上を進みながら, 極座標系で角度が増える順に12個の点を巡っていって,最初の点まで戻るようにします. このように12個の点を巡回したときの軌跡で囲まれる領域が六芒星です.
六芒星描画メソッドの仕様
六芒星を描くメソッドは次のように定義することにします.
def hexagram(cx,cy,r,theta) end

各引数は次のように解釈します.
- (cx,cy): 中心座標
- r: 半径(中心から外側の頂点までの距離)
- theta: 姿勢(x軸正の方向を基準として左回りでthetaの方向に外側の頂点のうち1つを配置する)
thetaの単位は度(degree)でも弧度(radian)でも構いません.
テンプレート,サンプルプログラム
プログラムテンプレートを使って構いません.
次にサンプルプログラムを示します.
技術情報
プログラムで利用するかもしれない情報を提供します.必ずしもすべてを使わなくても構いません.なお図形は重ねて描画できます.
# 三角関数(引数はラジアンで指定する) Math.sin(x) Math.cos(x) # 円周率(※末尾の2文字は大文字でピー,アイ) Math::PI # xの平方根 Math.sqrt(x) # (1つ以上の)三角形の描画(内部で順に指定する頂点3つずつで定まる三角形をそれぞれ描く) GL.Begin(GL::TRIANGLES) : GL.End() # 凸多角形の描画 GL.Begin(GL::POLYGON) : GL.End()
プログラムの作成に必要であれば以下も使ってください.
- sleep(t)
t秒間処理を停止する(tは小数値で指定可能) - rand(n)
nは非負整数.n >= 1のときは,0,1,...,n-1のうちいずれかの整数をランダムに一つ発生させる(つまりn=1の場合は0のみが発生することになる). n=0のときは,0以上1未満の数値をランダムに一つ発生させる.