ジッタクラス定義とテストサンプル

ジッタサンプリングアルゴリズムテスト、小さなグラフィックスは、コードとテストチャートやバーの間に任意の有意な差が表示されません。

クラスの宣言:

#pragma回
#ifndefの__JITTERED_HEADER__ 
の#define __JITTERED_HEADER__ 

の#include "sampler.h" 

クラスジッタ:公共サンプラー{ 
パブリック:
	ジッタ(); 
	〜ジッタ(); 
	ジッタ(CONST整数SAMPS)。
	ジッタ(CONST整数SAMPS、CONST整数セット)。
	ジッタ(constのジッタ&JI)。
	(ジッタ・JI CONST)ジッタ&演算子=。
	仮想サンプラー*クローン()constは、
	仮想空generate_samples(); 
}。
#endifの

クラスの実装:

#include "pch.h" 
の#include "jittered.h" 

ジッタ::ジッタ():サンプラー(){ 
	generate_samples()。
} 

ジッタ::〜ジッタ(){} 

ジッタ::ジッタ(CONST整数SAMPS):サンプラー(SAMPS){ 
	generate_samples()。
} 

ジッタ::ジッタ(CONST整数SAMPS、CONST整数セット):サンプラー(SAMPS、セット){ 
	generate_samples()。
} 

(ジッタ&JI CONST)ジッタ::ジッタ:サンプラー(JI){ 
	generate_samples()。
} 

ジッタ・ジッタ::演算子= {(ジッタ&JI CONST)
	IF(この==&JI)
		リターン*この; 
	サンプラー::演算子=(JI)。
	*これを返します。
} 
 
サンプラー*ジッタ::クローン()constは{
	新しいジッタ(* this)を返します。
}

ボイドジッタ:: generate_samples(){ 
	整数N =(整数)のstd :: SQRT((ldouble)nsamples)。
	(; P <nsetsあり; p ++整数P = 0){ための
		(I = 0の整数であり; I <N; I ++)用の
			ため(J = 0の整数であり、j <nであり、j ++){ 
				ポイント2 SP((J + random_ldouble() )/ N、(I + random_ldouble())/ N)//抖动算法核心
				samples.push_back(SP); 
			} 
	} 
} 

テスト結果は、グラフ:

おすすめ

転載: www.cnblogs.com/dalgleish/p/12602759.html