ジッタサンプリングアルゴリズムテスト、小さなグラフィックスは、コードとテストチャートやバーの間に任意の有意な差が表示されません。
クラスの宣言:
#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); } } }
テスト結果は、グラフ: