SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

C++で線を描画する際のさまざまなテクニック

C++による高品質な線の描画手法

  • このエントリーをはてなブックマークに追加

本稿では、C++言語を実装に利用した、線分描画の基礎から高品質な線分描画までを解説します。

  • このエントリーをはてなブックマークに追加

はじめに

 プログラムで線分を描くに当たって、基礎的なことを解説します。

対象読者

 コンピューターグラフィックス、画像処理に興味がある人。

サンプル画像

 サンプルプログラムで作成した円の画像です。

編集部注
 下記の縮小版では、一部モアレが発生しています。
縮小版(画像をクリックすると実寸で表示されます)
縮小版(画像をクリックすると実寸で表示されます)
縮小版(画像をクリックすると実寸で表示されます)
縮小版(画像をクリックすると実寸で表示されます)

サンプルプログラム

 記事上部のリンクからバイナリファイルをダウンロードして解凍し、「LineDraw.exe」を実行してください。

画面について

 プログラムを実行すると、黒色の背景の上に同心円が表示されます。左側には、表示パラメーターや操作方法、処理時間などが表示されます。

操作方法について

操作方法一覧
キー項目名値範囲
L描画アルゴリズムの選択Bresenham/DDA/Wu/Nelson
P描画パターンの選択p1/p2/p3/radial/circle
左右キーX位置の変更
上下キーY位置の変更
Iradialパターンの場合は内側の円の大きさ、circleパターンの場合は同心円の間隔の変更0.1~10.0
Aradialパターンとcircleパターンの場合に、線を描く角度の細かさを変更0.01~360.0
TWuとNelsonの描画アルゴリズムの場合に線の濃さを変更0.0~1.0
FNelson描画アルゴリズムのパラメータ0.0~
Ggamma補正のパラメータ0.0~
Shift[Shift]と同時押しでパラメータ増加、[Shift]と同時押しでない場合パラメータ減少
Ctrl[Ctrl]と同時押しでパラメータの変化の割合を10倍
Rパラメータの初期化

ソースコード

 サンプルプログラムはMicrosoftのVisual Studio 2005 StandardのC++で作成をしています。記事上部のリンクからソースファイルをダウンロードして解凍した後、「LineDraw.sln」というソリューションファイルを開いてください。ウィンドウ表示のライブラリにはSDLを使っています。文字表示にはSDL_kanjiを使っています。線の描画には自作のライブラリを利用しています(「common\gl」フォルダに入っています)。

 ソースコード中のテンプレート指定を変更することによって、色の精度や種別(モノクロorカラー)などを変更することができます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
描画先の画素配列

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

べるぽん(ベルポン)

職業:プログラマ日記:http://d.hatena.ne.jp/berupon/物置:http://www.geocities.jp/beruponu/index.html 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/335 2006/03/27 14:12

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング