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

Figures::ShaderGaussianDot

概要

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

使い方

 ShaderGaussianDotはガウシアンの幅(正規分布のσに相当)を指定し、draw()すれば描画されるクラスです。基準の座標指定(centering, shiftなど)はFigureの基本操作に準じます。

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

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

  // 初期設定
  Figures::ShaderGaussianDot dot;
  dot.setSigma(10).centering();
  dot.fill = Color::white;

  // 表示
  while(!Keyboard::esc.pushed()) {
    cnvs.clear(Color::gray);
    dot.shift(0.3,0).draw();
    cnvs.flip();
  }
}

メソッド

パラメタ設定

fill=
最大値の色を指定します。最大値にガウス関数をかけたドットが描画されます。
setSigma(double sigma)
エンベロープの大きさを指定します。ガウス関数 a*exp( -(x-b)^2 / 2c^2) のc、正規分布で言うσに相当する値をピクセル単位で指定します。描画範囲は8σ四方(片側4σ)になります。

移動

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

描画

ShaderGaussianDot& draw(Drawable &target)
Gabor Patchを描画します。

座標取得

それぞれの関数名のとおりのGaussian Patchの描画範囲の情報を取得します。また、描画範囲は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:43
キーワード:[Figure] [Shader] [Extension]
参照:[リファレンスマニュアル] [Figures] [Change in Psychlops 1.5.0]