zoukankan      html  css  js  c++  java
  • PureRandom采样类定义和测试

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

    类声明:

    #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);
    }  

    测试结果和图片:

  • 相关阅读:
    ibatisnet系列
    jQuery弹出层演示
    winform中datagridview的用法
    ASP.net:截取固定长度字符串显示在页面,多余部分显示为省略号
    hdu 4507 恨7不成妻(求l,r中与7不相关数字的平方和)
    hdu 2089 数位dp
    uestc 1307 统计数位之间相差不小于2的数的个数
    Spoj 2319 数位统计(0,1, 2^k1 这些数分成M份)
    zoj 3416 统计平衡数个数
    数位统计 sgu 390 <浅谈数位类问题>
  • 原文地址:https://www.cnblogs.com/dalgleish/p/12602755.html
Copyright © 2011-2022 走看看