Jittered采样类定义和测试
2024-09-18 05:20:31
抖动采样算法测试,小图形看不出什么明显区别,还是上代码和测试图吧。
类声明:
#pragma once
#ifndef __JITTERED_HEADER__
#define __JITTERED_HEADER__ #include "sampler.h" class Jittered:public Sampler {
public:
Jittered();
~Jittered();
Jittered(const integer samps);
Jittered(const integer samps, const integer sets);
Jittered(const Jittered& ji);
Jittered& operator=(const Jittered& ji);
virtual Sampler* clone() const;
virtual void generate_samples();
};
#endif
类实现:
#include "pch.h"
#include "jittered.h" Jittered::Jittered() :Sampler() {
generate_samples();
} Jittered::~Jittered() {} Jittered::Jittered(const integer samps) : Sampler(samps) {
generate_samples();
} Jittered::Jittered(const integer samps, const integer sets) : Sampler(samps, sets) {
generate_samples();
} Jittered::Jittered(const Jittered& ji) : Sampler(ji) {
generate_samples();
} Jittered& Jittered::operator=(const Jittered& ji) {
if (this == &ji)
return *this;
Sampler::operator=(ji);
return *this;
} Sampler* Jittered::clone() const {
return new Jittered(*this);
} void Jittered::generate_samples() {
integer n = (integer)std::sqrt((ldouble)nsamples);
for (integer p = 0; p < nsets; p++) {
for (integer i = 0; i < n; i++)
for (integer j = 0; j < n; j++) {
Point2 sp((j + random_ldouble()) / n, (i + random_ldouble()) / n); //抖动算法核心
samples.push_back(sp);
}
}
}
测试结果图:
最新文章
- 阿里聚安全受邀参加SFDC安全大会,分享互联网业务面临问题和安全创新实践
- 精通jQuery选择器
- java,js,jstl,EL的简单交互
- Java Web之Servlet
- [Asp.Net]获取客户端ip和mac地址
- R--相关分布函数、统计函数的使用
- 玩转sublime(一)——玩转全局文件搜索/替换
- iOS UIimage初始化时的两种方法
- 115太酷了,居然出了个TV版客户端
- LeetCode 6. ZigZag Conversion Question
- F, A, MS, QM, RF的OFFER和经历 -- Final update
- [补档]从OI学麻将
- hdu_2670Girl Love Value(dp)
- Jmeter(三)_配置元件
- Oracle中row_number()、rank()、dense_rank() 的区别
- Fetch使用
- 【XSY1596】旅行 期望DP
- C++和java的区别和联系
- REST WebService与SOAP WebService的比较
- .33-浅析webpack源码之doResolve事件流(5)