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输入数据,然 ...
随机推荐
- 169. Majority Element - LeetCode
Question 169. Majority Element Solution 思路:构造一个map存储每个数字出现的次数,然后遍历map返回出现次数大于数组一半的数字. 还有一种思路是:对这个数组排 ...
- 个人冲刺(一)——体温上报app(一阶段)
任务:完成了体温上报app的整体页面布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?& ...
- chkconfig-配置系统服务
管理Linux系统开机启动项. chkconfig命令默认在CentOS7+中不被使用了,由于系统服务管理都交给了systemctl托管. 语法 chkconfig [--list] [--type ...
- 记一次生产事故的排查与优化——Java服务假死
一.现象 在服务器上通过curl命令调用一个Java服务的查询接口,半天没有任何响应.关于该服务的基本功能如下: 1.该服务是一个后台刷新指示器的服务,即该服务会将用户需要的指示器数据提前计算好,放入 ...
- java面试:关于public static void main(String[] args)是什么意思?
它是作为JAVA中的主函数,所有java程序的运行起点就是这个方法,除了args这个名字可以不一样外,其他必须是这样. 主函数的一般写法如下: public static void main(Stri ...
- Python数据分析--Numpy常用函数介绍(6)--Numpy中与股票成交量有关的计算
成交量(volume)是投资中一个非常重要的变量,它是指在某一时段内具体的交易数,可以在分时图中绘制,包括日线图.周线图.月线图甚至是5分钟.30分钟.60分钟图中绘制. 股票市场成交量的变化反映了资 ...
- NB-IoT无线通信模块与Lora无线通信协议技术分析与前景展望
物联网的快速发展对无线通信技术提出了更高的要求,专为低带宽.低功耗.远距离.大量连接的物联网应用而设计的LPWAN(low-power Wide-Area Network,低功耗广域网)也快速兴起.物 ...
- Spring Security整合企业微信的扫码登录,企微的API震惊到我了
本文代码: https://gitee.com/felord/spring-security-oauth2-tutorial/tree/wwopen/ 现在很多企业都接入了企业微信,作为私域社群工具, ...
- 基于Kubernetes v1.24.0的集群搭建(二)
上一篇文章主要是介绍了,每台虚拟机的环境配置.接下来我们开始有关K8S的相关部署. 另外补充一下上一篇文章中的K8S的changelog链接: https://github.com/kubernet ...
- html实现3d视觉特效
<html> <head> <title>HTML5实现3D球效果</title> <style type="text/css" ...