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

    抖动采样算法测试,小图形看不出什么明显区别,还是上代码和测试图吧。

    类声明:

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

    测试结果图:

  • 相关阅读:
    MinIO:客户端mc
    jenkins:修改默认工作目录
    Shell:cut工具
    使用ArrayList时代码内部发生了什么(jdk1.7)?
    Heap Sorting 总结 (C++)
    我的第一篇——nginx+naxsi总结篇1
    PHP学习-验证用户名密码
    springboot使用事务
    springboot数据格式验证(二)——自定义日期格式验证
    springboot数据格式验证(一)
  • 原文地址:https://www.cnblogs.com/dalgleish/p/12602759.html
Copyright © 2011-2022 走看看