Jitter muestreo de la prueba de algoritmos, gráficos pequeños no ven ninguna diferencia significativa entre el código y el gráfico de prueba o en el bar.
declaración de la clase:
#pragma vez #ifndef __JITTERED_HEADER__ #define __JITTERED_HEADER__ # include "sampler.h" clase con jitter: Sampler pública { público: jitter (); ~ Jitter (); Jitter (const número entero Samps); Jitter (Samps enteros const, conjuntos enteros const); Jitter (const jitter y ji); Jitter operador & = (const jitter y ji); Sampler * clone () const virtual; generate_samples virtual void (); }; #terminara si
implementación de la clase:
# include "pch.h" # include "jittered.h" jitter :: jitter (): Sampler () { generate_samples (); } Jitter :: ~ jitter () {} jitter :: jitter (Samps enteros const): Sampler (Samps) { generate_samples (); } Jitter :: jitter (Samps enteros const, conjuntos enteros const): Sampler (Samps, conjuntos) { generate_samples (); } Jitter :: fluctuación de fase (jitter y const ji): Sampler (ji) { generate_samples (); } Fluctuación de fase y fluctuación de fase operador :: = (const con jitter y ji) { si (este y ji ==) de retorno * esto; Sampler :: operator = (ji); * volver esto; } Sampler * jitter :: clone () const { Return new jitter (* this); } void jitter :: generate_samples () { número entero n = (número entero) std :: sqrt ((LHaga) nsamples); para (número entero p = 0; p <nsets; p ++) { for (número entero i = 0; i <n; i ++) para (número entero j = 0; j <n; j ++) { Point2 sp ((j + random_ldouble () ) / n, (i + random_ldouble ()) / n); //抖动算法核心 samples.push_back (sp); } } }
Los resultados del ensayo gráfico: