此是随机采样算法,效果感觉一般般。

类声明:

#pragma once
#ifndef __PURERANDOM_HEADER__
#define __PURERANDOM_HEADER__ #include "sampler.h" class PureRandom :public Sampler {
public:
PureRandom();
~PureRandom();
PureRandom(const integer samps);
PureRandom(const integer samps, const integer sets);
PureRandom(const PureRandom& pr);
PureRandom& operator=(const PureRandom& pr);
virtual Sampler* clone() const;
virtual void generate_samples();
};
#endif  

类实现:

#include "pch.h"
#include "purerandom.h" PureRandom::PureRandom() :Sampler() {
generate_samples();
} PureRandom::~PureRandom() {} PureRandom::PureRandom(const integer samps) :Sampler(samps) {
generate_samples();
} PureRandom::PureRandom(const integer samps, const integer sets) : Sampler(samps, sets) {
generate_samples();
} PureRandom::PureRandom(const PureRandom& pr) : Sampler(pr) {
generate_samples();
} PureRandom& PureRandom::operator=(const PureRandom& pr) {
if (this == &pr)
return *this;
Sampler::operator=(pr);
return *this;
} Sampler* PureRandom::clone() const {
return new PureRandom(*this);
} void PureRandom::generate_samples() {
for (integer i=0;i<nsets;i++)
for (integer j = 0; j < nsamples; j++) {
Point2 sp(random_ldouble(), random_ldouble());
samples.push_back(sp);
}
}

 

World类需要修改build函数,之前修改的仍然有效,不再重复

void World::build() {
vp.set_hres(200);
vp.set_vres(100);
vp.set_sampler(new PureRandom());//这里使用PureRandom采样,之后都在这行代码修改,从而测试各种采样算法。
tracer_ptr = new MultiSphere(this);
Geometrics* obj = new Sphere(0, 0.5);
obj->set_color(RGBColor(1, 0, 0));
add_object(obj);
obj = new Sphere(Point3(0, -100.5, 0), 100);
obj->set_color(RGBColor(0, 0, 1));
add_object(obj);
}  

测试结果和图片:

PureRandom采样类定义和测试的更多相关文章

  1. Regular采样类定义和测试

    这个算法是均匀采样算法,继承于Sampler类. 类声明: #pragma once #ifndef __REGULAR_HEADER__ #define __REGULAR_HEADER__ #in ...

  2. Jittered采样类定义和测试

    抖动采样算法测试,小图形看不出什么明显区别,还是上代码和测试图吧. 类声明: #pragma once #ifndef __JITTERED_HEADER__ #define __JITTERED_H ...

  3. Hammersley采样类定义和测试

    原理参照书籍 类声明: #pragma once #ifndef __HAMMERSLEY_HEADER__ #define __HAMMERSLEY_HEADER__ #include " ...

  4. NRooks采样类定义和测试

    类声明: #pragma once #ifndef __NROOKS_HEADER__ #define __NROOKS_HEADER__ #include "sampler.h" ...

  5. MultiJittered采样类定义和测试

    多重抖动在书上说的是水平和竖直方面随机交换. 类声明: #pragma once #ifndef __MULTIJITTERED_HEADER__ #define __MULTIJITTERED_HE ...

  6. Sampler类定义

    此是所有采样的基类,这样定义的好处是,我们可以分别测试每一个采样算法. 类定义: #pragma once #ifndef __SAMPLER_HEADER__ #define __SAMPLER_H ...

  7. 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据

    12.4  基于Java类定义Bean配置元数据 12.4.1  概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...

  8. python类定义

    在我的收藏中有一篇特别详细的类讲解 此处部分内容引自:http://blog.sina.com.cn/s/blog_59b6af690101bfem.html class myclass: 'this ...

  9. 20175312 2018-2019-2 《Java程序设计》第6周课下选做——类定义

    20175312 2018-2019-2 <Java程序设计>第6周课下选做--类定义 设计思路 1.我觉得Book其实就是一个中转的作用,由测试类Bookself通过Book输入数据,然 ...

随机推荐

  1. linux篇-xshell连接突然报Connection closed by foreign host.

    1问题描述报错 Connection closed by foreign host. Disconnected from remote host(yaoGS) at 155513. 2登入虚拟机 在l ...

  2. 好客租房39-react组件基础总结

    1组件的两种创建方式:函数组件和类组件 2无状态函数组件 负责静态结构展示 3有状态组件 负责更新ui 让页面动起来 4绑定事件注意this指向问题 5使用受控组件创建表单 6完全利用js语言的能够力 ...

  3. 好客租房22-react组件的两种创建方式(类组件)

    2.2使用类创建组件 类组件:使用ES6的class创建的组件 约定1:类组件必须以大写字母开头 约定2:类组件应该继承react.component父类 从中可以使用父类的方法和属性 约定3:组件必 ...

  4. 20212115 实验二 《python程序设计》实验报告

    实验二 计算器设计 #20212115 2021-2022-2 <python程序设计> 实验报告二 课程: 课程:<Python程序设计>班级: 2121姓名: 朱时鸿学号: ...

  5. conda命令的使用,环境安装,创建环境以Anaconda为例

    Anaconda用命令conda创建环境: 安装Anaconda后,用Conda –version查看conda的版本号: Conda create -n name python = x.xx Con ...

  6. Spring cloud gateway 如何在路由时进行负载均衡

    本文为博主原创,转载请注明出处: 1.spring cloud gateway 配置路由 在网关模块的配置文件中配置路由: spring: cloud: gateway: routes: - id: ...

  7. 【FAQ】运动健康服务REST API接口使用过程中常见问题和解决方法总结

    华为运动健康服务(HUAWEI Health Kit)为三方生态应用提供了REST API接口,通过其接口可访问数据库,为用户提供运动健康类数据服务.在实际的集成过程中,开发者们可能会遇到各种问题,这 ...

  8. 技术分享 | 想做App测试就一定要了解的App结构

    本文节选自霍格沃兹测试开发学社内部教材 app 的结构包含了 APK 结构和 app 页面结构两个部分 APK结构 APK 是 Android Package 的缩写,其实就是 Android 的安装 ...

  9. mysql调优学习笔记

    性能监控 使用show profile查询剖析工具,可以指定具体的type 此工具默认是禁用的,可以通过服务器变量在绘画级别动态的修改 set profiling=1; 当设置完成之后,在服务器上执行 ...

  10. SAP 实例- 下拉框

    效果图 源代码 REPORT rsdemo_dropdown_listbox . DATA init. TABLES scarr. TABLES spfli. TABLES sflight. TABL ...