NRooks采样类定义和测试
类声明:
#pragma once
#ifndef __NROOKS_HEADER__
#define __NROOKS_HEADER__ #include "sampler.h" class NRooks :public Sampler {
public:
NRooks();
~NRooks();
NRooks(const integer samps);
NRooks(const integer samps, const integer sets);
NRooks(const NRooks& nr);
NRooks& operator=(const NRooks& nr);
virtual Sampler* clone() const;
virtual void generate_samples();
private:
void shuffled_x_coordinates();
void shuffled_y_coordinates();
};
#endif
类实现:
#include "pch.h"
#include "nrooks.h" NRooks::NRooks() :Sampler() {
generate_samples();
} NRooks::~NRooks() {} NRooks::NRooks(const integer samps) :Sampler(samps) {
generate_samples();
} NRooks::NRooks(const integer samps, const integer sets) : Sampler(samps, sets) {
generate_samples();
} NRooks::NRooks(const NRooks& nr) : Sampler(nr) {
generate_samples();
} NRooks& NRooks::operator=(const NRooks& nr) {
if (this == &nr)
return *this;
Sampler::operator=(nr);
return *this;
} Sampler* NRooks::clone() const {
return new NRooks(*this);
} void NRooks::generate_samples() {
for (integer i = 0; i < nsets; i++)
for (integer j = 0; j < nsamples; j++) {
Point2 sp((j + random_ldouble()) / nsamples, (j + random_ldouble()) / nsamples);
samples.push_back(sp);
}
shuffled_x_coordinates();
shuffled_y_coordinates();
} void NRooks::shuffled_x_coordinates() {
for (integer i = 0; i < nsets; i++)
for (integer j = 0; j < nsamples - 1; j++) {
integer k = random_integer() % nsamples + i * nsamples;
std::swap(samples[i * nsamples + j + 1].x, samples[k].x);
}
} void NRooks::shuffled_y_coordinates() {
for (integer i = 0; i < nsets; i++)
for (integer j = 0; j < nsamples - 1; j++) {
integer k = random_integer() % nsamples + i * nsamples;
std::swap(samples[i * nsamples + j + 1].y, samples[k].y);
}
}
测试结果图:

NRooks采样类定义和测试的更多相关文章
- Regular采样类定义和测试
这个算法是均匀采样算法,继承于Sampler类. 类声明: #pragma once #ifndef __REGULAR_HEADER__ #define __REGULAR_HEADER__ #in ...
- Jittered采样类定义和测试
抖动采样算法测试,小图形看不出什么明显区别,还是上代码和测试图吧. 类声明: #pragma once #ifndef __JITTERED_HEADER__ #define __JITTERED_H ...
- PureRandom采样类定义和测试
此是随机采样算法,效果感觉一般般. 类声明: #pragma once #ifndef __PURERANDOM_HEADER__ #define __PURERANDOM_HEADER__ #inc ...
- Hammersley采样类定义和测试
原理参照书籍 类声明: #pragma once #ifndef __HAMMERSLEY_HEADER__ #define __HAMMERSLEY_HEADER__ #include " ...
- MultiJittered采样类定义和测试
多重抖动在书上说的是水平和竖直方面随机交换. 类声明: #pragma once #ifndef __MULTIJITTERED_HEADER__ #define __MULTIJITTERED_HE ...
- Sampler类定义
此是所有采样的基类,这样定义的好处是,我们可以分别测试每一个采样算法. 类定义: #pragma once #ifndef __SAMPLER_HEADER__ #define __SAMPLER_H ...
- 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据
12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...
- python类定义
在我的收藏中有一篇特别详细的类讲解 此处部分内容引自:http://blog.sina.com.cn/s/blog_59b6af690101bfem.html class myclass: 'this ...
- 20175312 2018-2019-2 《Java程序设计》第6周课下选做——类定义
20175312 2018-2019-2 <Java程序设计>第6周课下选做--类定义 设计思路 1.我觉得Book其实就是一个中转的作用,由测试类Bookself通过Book输入数据,然 ...
随机推荐
- st表 LCA
我当时知道ST表可以 \(O(1)\) 求 LCA 的时候是极为震惊的,可以在需要反复使用 LCA 的时候卡常使用. ST表!用于解决 RMQ问题 ST表 我可能写得不好,看专业的 怎么实现? 考虑把 ...
- String 为什么不可变?
转载来源:String为什么不可变 今天来分享一道群友去阿里云面试遇到的 Java 基础面试真题:"String.StringBuffer.StringBuilder 的区别?String ...
- 记一次前端CryptoJS AES解密
1.背景 业务需求,需要联动多个平台,涉及到各平台的模拟登录. 已知加密前明文且正常登录.(无验证码要求) 某平台验证验证方式为.\login接口POST一串json字符串 { "accou ...
- JAVA - 如果hashMap的key是一个自定义的类,怎么办?
JAVA - 如果hashMap的key是一个自定义的类,怎么办? 使用HashMap,如果key是自定义的类,就必须重写hashcode()和equals().
- ExtJS 布局-Card 布局(Card layout)
更新记录: 2022年6月1日 开始. 2022年6月6日 发布. 1.说明 卡片布局类似牌堆,每次只有一个子组件可见,子组件几乎填满了整个容器.卡片布局常用于向导(Wizard)和选项卡(Tabs) ...
- ACL权限控制
ALC讲述比较详细 https://zhuanlan.zhihu.com/p/360158311
- 记录人生中的第一个bug
对象的引用 使用**只是拷贝了字典的最外层,加个deepcopy可以实现深拷贝,递归的去复制对象 bug来源: 在一次将数据库里的数据转成json格式过程中,在遍历数据库对象时,对象的引用不当,导致最 ...
- MySQL 8.0 新特性梳理汇总
一 历史版本发布回顾 从上图可以看出,基本遵循 5+3+3 模式 5---GA发布后,5年 就停止通用常规的更新了(功能不再更新了): 3---企业版的,+3年功能不再更新了: 3 ---完全停止更新 ...
- 关于vue cli 使用iview 自定义主题遇到的坑
定制主题,这里讲变量覆盖 当你老老实实的把上面文档中的代码一一复制粘贴到项目文件中时,发现了还没装less,所以你就 npm install less –savenpm install less-lo ...
- WPF第三方控件,只能输入数字型数据
话不多说,根据最近项目需求,为了减少输入验证等相关代码量,需要此控件 先上效果图 默认样式是这样,自己可以根据需求修改外形,但我更喜欢它自带的简洁版 有人可能会问怎么实现的呢?其实很简单,我们设置它的 ...