• 検索結果がありません。

コンストラクタ・デストラクタと初期化関連メンバー関数

ドキュメント内 Wave Field Library (WFL) Polygon Source Library (PSL) (ページ 68-71)

第 3 章 リファレンス 55

3.3 WaveField クラス

3.3.3 コンストラクタ・デストラクタと初期化関連メンバー関数

WaveField(void) WaveField(int nxy)

WaveField(int nx, int ny)

WaveField(int nx, int ny, double pxy)

WaveField(int nx, int ny, double px, double py)

WaveField(int nx, int ny, double px, double py, double wavelength)

戻り値 なし

説 明 コンストラクタ.1番目の形式では全てデフォルト値のオブジェクトを生成する.2番目の形式ではx方向 サンプル点数とy方向サンプル点数は同じnxyとなる.3番目の形式ではx方向サンプル点数nx,y方向サンプ ル点数をnxとし,x, y方向サンプリングが同じ間隔p[単位:m]のオブジェクトを生成する.4番目の形式では x方向とy方向サンプリング間隔をpxとpyで個別に設定する.5番目の形式ではさらに,波長をwavelength [単位:m]に設定する.

Note

初期状態では省略された引数のデフォルト値(既定値)は次のとおりである.

サンプル点数 Nx=Ny= 256 サンプリング間隔 Px=Py= 1µm 波長 λ= 632.8nm

これらのデフォルト値はデフォルト値を設定・取得するメンバー関数を用いて変更できる.

サンプル点数は必ず,2の累乗でなければならない.2の累乗でないサンプル点数を指定した場合は,指定した サンプル点数が格納できる最小の2の累乗サイズでオブジェクトが生成される.

Example

//すべてデフォルト値のオブジェクトを宣言する

3.3 WaveFieldクラス 69

W a v e F i e l d wf1 ;

//サンプル点数を512 x 5 1 2と し た オ ブ ジ ェ ク ト を 宣 言 す る W a v e F i e l d wf2 ( 5 1 2 ) ;

// 1 0 2 4 x 1 0 2 4で サ ン プ リ ン グ 間 隔 がx , y方 向 で 同 じ1 0 u mの オ ブ ジ ェ ク ト を 宣 言 す る W a v e F i e l d wf3 (1024 , 1024 , 10 e - 6 ) ;

// 2 0 4 8 x 2 0 4 8で サ ン プ リ ン グ 間 隔 がx方 向5 u my方 向1 0 u mの オ ブ ジ ェ ク ト を 宣 言 す る W a v e F i e l d wf3 (2048 , 2048 , 5 e -6 , 10 e - 6 ) ;

WaveField(const WaveField& wf);

戻り値 なし

説 明 コピーコンストラクタ.

~WaveField(void)

戻り値 なし

説 明 WaveFieldオブジェクトを明示的に削除する.対象オブジェクトで使用していたメモリは解放される.

void Dispose(void)

戻り値 なし

説 明 WaveFieldオブジェクトで使用していたメモリのみが解放される.オブジェクト自体は削除されない.

WaveField& Init(Complex* d = NULL)

戻り値 対象オブジェクトへの参照

説 明 WaveFieldオブジェクトの以前のサンプリングデータを破棄し,dがNULLまたは省略された場合には新た

にメモリブロックを取得する.以前のサンプリングデータは削除される.dがNULLでない場合には,dが示す メモリブロックをデータ配列として用いる.

Note

データ配列は初期化されない.データ配列の初期化(ゼロクリア)にはClear()メンバー関数を用いる.

x方向のサンプリング数が4以下のフィールドは生成できず,必ず4を超えるように修正される.

一度dでメモリブロックを指定した後,再度d=NULLでこの関数を呼び出した場合,以前に指定したメモリブ ロックを使用しようとする.この時,そのメモリブロックがNx×Nyのデータに対して不足する場合はエラー を発生する.

WaveFieldのメンバー関数にはSSE命令を使うものがあるため,メモリブロックは16バイト境界で整列しな

ければならない.

wfl::Malloc()関数で取得したメモリブロックのアライメントは16バイトになる.

WaveField& InitNxNy(void)

戻り値 対象オブジェクトへの参照

説 明 フィールドのサンプリング数の設定のみを2の整数乗に正規化する.データメモリの再取得は行わない.

Note

データメモリは再取得されない.データメモリの再取得にはInit()メンバー関数を用いる.

x方向のサンプリング数が4以下のフィールドは生成できず,必ず4を超えるように修正される.

Complex* GetDataPointer(void)

戻り値 データ配列メモリブロックの先頭へのポインタ

説 明 データ配列メモリブロックの先頭ポインタを取得する.

WaveField& Clear(void)

戻り値 対象オブジェクトへの参照

説 明 WaveFieldオブジェクトのサンプリングデータをゼロクリアする.実部虚部とも0が設定される.

WaveField& CopyParam(const WaveField& source)

戻り値 対象オブジェクトへの参照

説 明 WaveFieldオブジェクトのサンプリングデータとサンプル点数Nx×Ny以外の全てのパラメータをsource

からコピーする.

Note

サンプル点数Nx×Nyはコピーされない.サンプル点数変更にはSetNx()メンバー関数,SetNy()メンバー 関数およびInit()メンバー関数を用いること.

WaveField& CopyData(const WaveField& source)

戻り値 対象オブジェクトへの参照

説 明 WaveFieldオブジェクトのサンプリングデータのみをsourceからコピーする.サンプル点数Nx×Ny

外のパラメータはコピーされない.

Note

サンプル点数Nx×Nyはサンプリングデータとともにコピーされる.

3.3 WaveFieldクラス 71

ドキュメント内 Wave Field Library (WFL) Polygon Source Library (PSL) (ページ 68-71)