FrontPage  ページ一覧  検索  更新履歴  RSS  ログイン

Figures::ShaderGrating

概要

シェーダを使って正弦波縞を描くクラスです。高速かつ手軽に使うことができます。

使い方

 ShaderGratingは正弦波の波長・振幅(コントラスト)、位相、方位の情報を持っています。それぞれのパラメタを予め指定しておき、draw()関数を実行するとそのつど描画します。基準の座標指定(centering, shiftなど)はFigureの基本操作に準じます。

// サンプル
#include <psychlops.h>
using namespace Psychlops;

void psychlops_main() {
  Canvas cnvs(Canvas::fullscreen);

  // 初期設定
  Figures::ShaderGrating grating;
  grating.phase = 0;
  grating.contrast = 1;
  grating.wavelength = 50;
  grating.orientation = 2*PI/10.0;
  grating.set(500,500).centering();

  // 表示
  while(!Keyboard::esc.pushed()) {
    cnvs.clear(Color::gray);
    grating.phase += 2*PI/60;
    grating.draw();
    cnvs.flip();
  }
}

メソッド

パラメタ設定

wavelength =
正弦波の波長をピクセル単位で指定します。
contrast =
正弦波のコントラストを指定します。
phase =
正弦波の位相を指定します。
orientation =
正弦波の方位を指定します。
set(width, height)
縞を表示する矩形領域の幅と高さを指定します

移動

ShaderGrating& centering()
Gratingを画面の中央に移動します。
ShaderGrating& centering(double x, double y)
Gratingの中心を(x,y)に移動します。
ShaderGrating& centering(const Point &po)
Gratingの中心をpoに移動します。
ShaderGrating& centering(const Rectangle &rect)
長方形の中心をrectで指定したRectangleと同一にします。
ShaderGrating& centering(const Image &img)
Gratingの中心をimgで指定したImageの中央に移動します。
ShaderGrating& shift(double h, double v)
Gratingを現在の座標から(h,v)だけ移動します。

描画

ShaderGrating& draw(Drawable &target = *Drawable::prime)
Gratingを描画します。

座標取得

それぞれの関数名のとおりのGratingの描画範囲の情報を取得します。また、描画範囲は8σ四方の正方形で、getWidthなら描画範囲の幅を返します。

double getWidth() const
double getHeight() const
Point getCenter() const
double getHcenter() const
double getVcenter() const
double getTop() const
double getLeft() const
double getBottom() const
double getRight() const
更新日時:2010/04/11 14:01:54
キーワード:[Figure] [Shader] [Extension]
参照:[Figures] [リファレンスマニュアル] [Change in Psychlops 1.5.0]