技術は楽するために

日々の開発で作ったプログラムの一部を公開していきます。

楕円を外接する多角形の描き方

知り合いの学生から楕円の外接多角形を描く方法を聞かれて答えられなかったため考えてみた。

内接は、直ぐに思いつくが、外接はどう書けば良いかな?

インターネットで調べでも真円の外接多角形を描く方法は、出てきたが意外に楕円の外接多角形を描く方法は無かった。

 そこで、自分で考えてみることにした。

 

とはいえ、そんなに難しく無いです。

以下のことが分かれば、簡単に描画できます。

  1. 楕円と楕円の半長径を半径とした真円の関係
  2. 真円の外接多角形の描画方法

 

1.楕円と楕円の半長径を半径とした真円の関係

 中心を原点とした半径aの真円と半長径をa、半短径bの楕円について考えます。

 この2つの図形には、以下の関係があります。

真円の座標(x, y)=楕円の座標(x, (b/a)y)

 つまり半径a真円をy方向にb/a倍すると長径2a, 短径2bの楕円ができます。

      f:id:kashiraWork:20160828125424p:plain

2.真円の外接多角形の描画方法

真円の外接多角形は、三角関数の理論を使うとで算出できます。

真円の半径をr、真円の外接多角形の頂点のなす角をθとすると、「真円の中心」から「真円の外接多角形の頂点」までの距離は、r/cos(θ/2)になります。

 

    f:id:kashiraWork:20160828133301p:plain

3.楕円の外接多角形の描画方法

「1.」で楕円と真円の関係を説明しました。

つまり、楕円の外接多角形と真円の外接多角形にも同様の関係があります。

「2.」で真円の外接多角形の描き方を説明しました。

よって、半径aの真円の外接多角形を生成して(*「2」の方式)、生成した各頂点のy座標を(b/a)倍することで(*「1」の方式)半長径をa、半短径bの外接多角形の楕円を描画できます。