Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/03/21 12:00

本稿では、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カラー)などを変更することができます。


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

修正履歴

  • 2006/03/26 22:11 最適化しました。 画面描画にSDLを使うようにしました。

  • 2006/03/21 20:56 2006/3/21 ・BresenahamとDDAとWuの場合のクリッピング処理のパラメータが誤っていたためクラッシュするバグがあったのを修正しました。 ・BresenahamとDDAの場合はγ補正処理を行わないようにしました。

著者プロフィール

  • べるぽん(ベルポン)

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

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5