JavaとC++で楕円を描画するプログラムを書く

スポンサーリンク

 

こんにちは!HELLO!您好!привет там ! 안녕하세요 !Hola !

泥臭い楕円をコンソールに描画するプログラムを書いたのでチラ裏。

大学1年の昼休みに暇つぶしで書き始めたはいいが、時間切れで結局いまいちな仕上がりになりそのまま放置した楕円描画プログラム。

最近また諸事情で書くことになったので掘り起こしました。

ただし今回は割とあっさり綺麗に書けました。泥臭さはありますが。

me

あ。遠回りなアルゴリズムに基づいて実装しようとして詰まったのは内緒。

単純に楕円の媒介変数表示を思い出せば終わりです。

媒介変数表示ですよ。

媒介変数表示を利用した実装方法で狙い撃ちしてください。

このとき高校数学の教科書やら青チャートやら大学への数学やらを本棚から決して取り出さないように。

2次曲線の復習を始めて調子に乗らないように。

定義に基づいて離心率やら準線を組み込むような小難しいことは考えないように。。。

ということで早速チラ裏っていきましょう。

あ。彼女欲しい。切実

 

楕円の数学的予備知識とアルゴリズム

楕円描画プログラムを作成するうえで必要な楕円の数学的基礎を復習します。

楕円の長軸を 2a、短軸を 2b とすると方程式は以下の通りとなります。

 

 

このとき xy平面にある楕円上の任意の点は以下のように媒介変数で表現できます。

 

 

このとき楕円の概形は以下の通りです。

 

 

楕円上の任意の点が媒介変数で表すことができることを利用して、与えられた a と b をもとに θ の値を 0 から2π まで動かしながら逐次的に xy 座標を計算して2次元配列に格納します。

ただし、与えられる楕円の中心座標をもとに各座標を適当に平行移動します。

格納した座標位置に任意の文字を出力すればコンソールに楕円を描画することができます。

 

楕円描画関数の仕様

関数名は setEllipse として5つの引数を用意しました。

楕円描画の関数は Processing などのグラフィック系のオープンソースには標準的に実装されており、一般的に楕円の中心座標と長軸と短軸を引数に与える仕様になっています。

ですが setEllipse 関数は上記の楕円の図形にのっとり中心座標と半長軸 a と半短軸 b の値を引数としました。

加えて、楕円を構成する文字を第一引数に与えることで柔軟に変更できます。

void setEllipse( int c, int x, int y, int a, int b )

 

C++で描く

 

実行画面

Javaで描く

 

実行画面

 

おまけ

C言語による最新アルゴリズム事典に掲載されているアルゴリズムを参考に実装しました。

 

ちなみについ最近この本の最新版が出版されました。

普通に欲しいですが今は金欠なのでひとまず見送ります。

 

 

実行画面

 

説明をかなり省略しましたが、プログラムを読んでいただければ分かると思います。

ぜひ参考にしていただけたらと思います。

誤りを見つけてくださった方はぜひ連絡をください。

 

ということで以上、楕円プログラムなんかより彼女が欲しいの回でした。

彼女の作り方教えてください。切実。

では Adios!!

スポンサーリンク


ABOUT ME!

yuk!

国立大学情報学科に通う大学生です。天然パーマと戦いながらすーぱーエンジニアを目指し技術とセンスを磨いています。 室内に引きこもりがちでヘビメタと猫と甘いものが救いのキーボードカチャカチャ生活ですが、最近はブログで文章を書くことが楽しいです。モットーは「 Who dares wins. = 人生是一箇,活殺全在我。」好きな言葉は「マジ卍」。