[ CG実習 >  CG実習 課題(2025) >  [課題04] 六芒星を描くメソッドの作成と利用 ]

[課題04] 六芒星を描くメソッドの作成と利用

課題

六芒星(hexagram)を描くメソッドを定義して,それを利用して絵を描画するプログラムを作成して提出してください.
  1. 以下に示す仕様にしたがって,六芒星を描くメソッドhexagram(cx,cy,r,theta)を定義してください
  2. (同じプログラムで)六芒星を含むシーンを描いてください
  3. アニメーションやインタラクションの機能は必ずしも実現しなくて構いません.

六芒星(hexagram)

六芒星(hexagram)は正六角形の頂点を一つおきにつなぐ対角線をすべてひいたときに現れます.

正六角形の頂点を一つおきにつなぐ対角線をすべてひくと, それらの交点として12個の点が得られます. それらのうちの1つを選んで, その点を出発して,対角線上を進みながら, 極座標系で角度が増える順に12個の点を巡っていって,最初の点まで戻るようにします. このように12個の点を巡回したときの軌跡で囲まれる領域が六芒星です.

六芒星描画メソッドの仕様

六芒星を描くメソッドは次のように定義することにします.

  def hexagram(cx,cy,r,theta)


  end
六芒星のデータ指定

各引数は次のように解釈します.

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()

プログラムの作成に必要であれば以下も使ってください.

[ CG実習 >  CG実習 課題(2025) >  [課題04] 六芒星を描くメソッドの作成と利用 ]