- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

関数
画像描画

## 関数
template<class Array >
bool | mist::draw_buffer (const Array &image, typename Array::size_type image_width, typename Array::size_type image_height, typename Array::size_type window_width, typename Array::size_type window_height, double zoom=1.0, double xpos=0.0, double ypos=0.0, bool interpolate=true)
| 2次元画像をOpenGLを用いてウィンドウに描画する
template<class Array >
bool | mist::draw_image (const Array &image, typename Array::size_type window_width, typename Array::size_type window_height, double zoom=1.0, double xpos=0.0, double ypos=0.0, double back_r=0.0, double back_g=0.0, double back_b=0.0, bool interpolate=true, bool blend=false)
| 2次元画像をOpenGLを用いてウィンドウに描画する
template<class Array >
bool | mist::draw_pixels (const Array &image, typename Array::size_type window_width, typename Array::size_type window_height, typename Array::difference_type xpos=0, typename Array::difference_type ypos=0, bool blend=false)
| 2次元画像をOpenGLを用いてウィンドウに描画する
vector2< double > | mist::screen2point (const vector2< double > &pt, double imgX, double imgY, double aspect, double winW, double winH, double zoom, double posx, double posy)
| ウィンドウ座標系の点を画像座標系の点に変換する
vector2< double > | mist::point2screen (const vector2< double > &pt, double imgX, double imgY, double aspect, double winW, double winH, double zoom, double posx, double posy)
| 画像座標系の点をウィンドウ座標系の点に変換する

## 説明

次のヘッダをインクルードする
#include <mist/draw.h>

## 関数

template<class Array >

bool mist::draw_buffer | ( | const Array & | image,
|  | typename Array::size_type | image_width,
|  | typename Array::size_type | image_height,
|  | typename Array::size_type | window_width,
|  | typename Array::size_type | window_height,
|  | double | zoom = `1.0`,
|  | double | xpos = `0.0`,
|  | double | ypos = `0.0`,
|  | bool | interpolate = `true`
| ) |  |

2次元画像をOpenGLを用いてウィンドウに描画する

OpenGLのテクスチャとして，2次元画像をウィンドウに描画する 描画される絵は，ウィンドウの縦と横の短いほうの辺に画像端が張り付くように描画される

注意
  入力画像の一辺は，2の指数乗になっている必要がある

引数

  [in] | image | … 入力画像
  [in] | image_width | … 入力画像内で，画面に描画する幅
  [in] | image_height | … 入力画像内で，画面に描画する高さ
  [in] | window_width | … 出力ウィンドウの幅
  [in] | window_height | … 出力ウィンドウの高さ
  [in] | zoom | … 拡大率（0より大きい値を指定．デフォルトは1.0）
  [in] | xpos | … 画像をX軸方向にどれだけずらして描画するか（デフォルトは0）
  [in] | ypos | … 画像をY軸方向にどれだけずらして描画するか（デフォルトは0）
  [in] | interpolate | … 画素の間を補間し，スクリーン上で滑らかにする（デフォルトはtrue）

戻り値

  true | … 描画に成功
  false | … 不適切な入力画像の場合

参照元 mist::draw_image().

template<class Array >

bool mist::draw_image | ( | const Array & | image,
|  | typename Array::size_type | window_width,
|  | typename Array::size_type | window_height,
|  | double | zoom = `1.0`,
|  | double | xpos = `0.0`,
|  | double | ypos = `0.0`,
|  | double | back_r = `0.0`,
|  | double | back_g = `0.0`,
|  | double | back_b = `0.0`,
|  | bool | interpolate = `true`,
|  | bool | blend = `false`
| ) |  |

2次元画像をOpenGLを用いてウィンドウに描画する

OpenGLのテクスチャとして，2次元画像をウィンドウに描画する 描画される絵は，ウィンドウの縦と横の短いほうの辺に画像端が張り付くように描画される

注意
  入力画像の一辺は，2の指数乗でなくても正しく描画される

引数

  [in] | image | … 入力画像
  [in] | window_width | … 出力ウィンドウの幅
  [in] | window_height | … 出力ウィンドウの高さ
  [in] | zoom | … 拡大率（0より大きい値を指定．デフォルトは1.0）
  [in] | xpos | … 画像をX軸方向にどれだけずらして描画するか（デフォルトは0）
  [in] | ypos | … 画像をY軸方向にどれだけずらして描画するか（デフォルトは0）
  [in] | back_r | … 塗りつぶす背景色の赤成分（デフォルトは0）
  [in] | back_g | … 塗りつぶす背景色の緑成分（デフォルトは0）
  [in] | back_b | … 塗りつぶす背景色の青成分（デフォルトは0）
  [in] | interpolate | … 画素の間を補間し，スクリーン上で滑らかにする（デフォルトはtrue）
  [in] | blend | … すでに描画されている物とブレンドするかどうか（デフォルトはfalse）

戻り値

  true | … 描画に成功
  false | … 不適切な入力画像の場合

使用例
#include <mist/draw.h>
mist::array2< mist::rgb< unsigned char > > image; ←画像読み込みルーチンなどで，画像を読み込んでおく．
mist::draw_image( image, // 入力画像
window_width, // 出力するウィンドウの幅
window_height, // 出力するウィンドウの高さ
zoom, // ズームの割合（デフォルトは1倍）
xpos, // 中心からX軸方向にずらす割合（デフォルトは0）
ypos, // 中心からY軸方向にずらす割合（デフォルトは0）
back_r, // 塗りつぶす背景色の赤成分（デフォルトは0）
back_g, // 塗りつぶす背景色の緑成分（デフォルトは0）
back_b, // 塗りつぶす背景色の青成分（デフォルトは0）
interpolate, // 画素の間を補間し，スクリーン上で滑らかにする（デフォルトはtrue）
blend // すでに描画されている物とブレンドするかどうか（デフォルトはfalse）
);

参照先 mist::draw_buffer().

template<class Array >

bool mist::draw_pixels | ( | const Array & | image,
|  | typename Array::size_type | window_width,
|  | typename Array::size_type | window_height,
|  | typename Array::difference_type | xpos = `0`,
|  | typename Array::difference_type | ypos = `0`,
|  | bool | blend = `false`
| ) |  |

2次元画像をOpenGLを用いてウィンドウに描画する

OpenGLの glDrawPixels 関数を用いて，ウィンドウ上に画像を描画する 描画される絵は，ウィンドウの１画素と画像の１画素が対応するように描画される

注意
  入力画像の一辺は，2の指数乗でなくても正しく描画される

引数

  [in] | image | … 入力画像
  [in] | window_width | … 出力ウィンドウの幅
  [in] | window_height | … 出力ウィンドウの高さ
  [in] | xpos | … 画像をX軸方向に何画素ずらして描画するか（デフォルトは0）
  [in] | ypos | … 画像をY軸方向に何画素ずらして描画するか（デフォルトは0）
  [in] | blend | … すでに描画されている物とブレンドするかどうか（デフォルトはfalse）

戻り値

  true | … 描画に成功
  false | … 不適切な入力画像の場合

使用例
#include <mist/draw.h>
mist::array2< mist::rgb< unsigned char > > image; ←画像読み込みルーチンなどで，画像を読み込んでおく．
mist::draw_image( image, // 入力画像
window_width, // 出力するウィンドウの幅
window_height, // 出力するウィンドウの高さ
zoom, // ズームの割合（デフォルトは1倍）
xpos, // 中心からX軸方向にずらす割合（デフォルトは0）
ypos, // 中心からY軸方向にずらす割合（デフォルトは0）
blend // すでに描画されている物とブレンドするかどうか（デフォルトはfalse）
);

vector2< double > mist::point2screen | ( | const vector2< double > & | pt,
|  | double | imgX,
|  | double | imgY,
|  | double | aspect,
|  | double | winW,
|  | double | winH,
|  | double | zoom,
|  | double | posx,
|  | double | posy
| ) |  |
| inline

画像座標系の点をウィンドウ座標系の点に変換する

画像上の特定の点をウィンドウ上に反映させたい時などに使用する

引数

  [in] | pt | … 画像座標系における点
  [in] | imgX | … 描画に用いている画像の幅
  [in] | imgY | … 描画に用いている画像の高さ
  [in] | aspect | … アスペクト（Y軸方向の画素サイズ / X軸方向の画素サイズ）
  [in] | winW | … 出力ウィンドウの幅
  [in] | winH | … 出力ウィンドウの高さ
  [in] | zoom | … 拡大率
  [in] | posx | … 画像をX軸方向にどれだけずらして描画するか
  [in] | posy | … 画像をY軸方向にどれだけずらして描画するか

戻り値
  ウィンドウ座標系における点の位置

参照先 mist::vector2< T >::x, と mist::vector2< T >::y.

vector2< double > mist::screen2point | ( | const vector2< double > & | pt,
|  | double | imgX,
|  | double | imgY,
|  | double | aspect,
|  | double | winW,
|  | double | winH,
|  | double | zoom,
|  | double | posx,
|  | double | posy
| ) |  |
| inline

ウィンドウ座標系の点を画像座標系の点に変換する

ウィンドウ上でクリックされた点等を，画像座標系での点に変換する

引数

  [in] | pt | … ウィンドウ座標系における点
  [in] | imgX | … 描画に用いている画像の幅
  [in] | imgY | … 描画に用いている画像の高さ
  [in] | aspect | … アスペクト（Y軸方向の画素サイズ / X軸方向の画素サイズ）
  [in] | winW | … 出力ウィンドウの幅
  [in] | winH | … 出力ウィンドウの高さ
  [in] | zoom | … 拡大率
  [in] | posx | … 画像をX軸方向にどれだけずらして描画するか
  [in] | posy | … 画像をY軸方向にどれだけずらして描画するか

戻り値
  画像座標系における点の位置

参照先 mist::vector2< T >::x, と mist::vector2< T >::y.