GraphicLibrary  0.5.0
tadah_fussy::gl::interpolation::Polynomial クラス

多項式による補間法 [詳解]

tadah_fussy::gl::interpolation::Polynomial の継承関係図
tadah_fussy::gl::interpolation::Base

公開型

using PolynomialFunc = RGB(*)(const std::vector< RGB > &col, double t)
 多項式関数の型
 

公開メンバ関数

 Polynomial (uint32_t n, PolynomialFunc pf)
 利用する多項式を指定して構築 [詳解]
 
virtual bool operator() (const canvas::DrawingArea_IF &draw, Coord< double > p, RGB *rgb) const
 多項式によるサンプル補間処理 [詳解]
 
- 基底クラス tadah_fussy::gl::interpolation::Base に属する継承公開メンバ関数
virtual ~Base ()
 仮想デストラクタ (何もしない)
 

詳解

多項式による補間法

指定した範囲のピクセルの色コードを通る多項式を求めて補間処理を行う。

interpolation::LagrangePolynomial と interpolation::NewtonPolynomial の利用を想定している。 次のコードで、Lagrange 多項式を利用した補間をしながら、パターン pattern を描画領域 draw に c0 - c1 の大きさで拡大・縮小貼り付けすることができる。

interpolation::Polynomial inter( 5, interpolation::LagrangePolynomial );
draw::ResizePut( pattern, draw, c0, c1, false, false, false, inter );
void ResizePut(const canvas::DrawingArea_IF &pattern, canvas::DrawingArea_IF &draw, pen::GPixelDraw &pixelDraw, Coord< int > s, Coord< int > e, bool reverseX, bool reverseY, bool swapXY, const interpolation::Base &ipF)
パターンの拡大・縮小描画

構築子と解体子

◆ Polynomial()

tadah_fussy::gl::interpolation::Polynomial::Polynomial ( uint32_t  n,
PolynomialFunc  pf 
)
inline

利用する多項式を指定して構築

変数の範囲 n は 2 以上でなければならない。2 より小さい場合は assert を実行する。

引数
n多項式関数の係数を求めるための変数の範囲
pf利用する補間関数

関数詳解

◆ operator()()

virtual bool tadah_fussy::gl::interpolation::Polynomial::operator() ( const canvas::DrawingArea_IF draw,
Coord< double >  p,
RGB rgb 
) const
virtual

多項式によるサンプル補間処理

描画領域 draw、補間関数 pf、補間結果へのポインタ rgb が未定義の場合は assert を実行する

引数
draw描画領域
p補間対象のピクセル座標
rgb求めた色コードを返す変数へのポインタ
戻り値
draw のメンバ関数 canvas::DrawingArea_IF::point の返り値をそのまま返す ( 通常、RGB 成分が取得できたら true を返す )

tadah_fussy::gl::interpolation::Baseを実装しています。


このクラス詳解は次のファイルから抽出されました: