An open API service indexing awesome lists of open source software.

https://github.com/easonzero/sampler

just a sampler
https://github.com/easonzero/sampler

Last synced: 2 months ago
JSON representation

just a sampler

Awesome Lists containing this project

README

        

# Sampler
just a sampler

Sampler是一个取样调试工具,可以图形化取样结果,并计算出各个分布区间的取样个数和取样概率

![result](./img/result.png)

## 使用之前

Sampler脚本文件在`\bin`路径下,在引用它之前记得先引用sylvester.js库,你可以在`\test`路径下找到它

## 快速开始

```js
let canvas = document.getElementById('canvas');

let renderer = new $S.Renderer(canvas);
let sampler = new $S.Sampler('cosineWeightedDirection',$V([0,1,0]));
let print = false;

function tick(){
requestAnimationFrame(tick);
renderer.render(sampler.sampleDatas);
if(sampler.sampleNum>1000){
if(!print) {
sampler.print();
print = !print;
}
return;
}
sampler.sampling();
}

tick();
```

上面这段样例代码非常的简单,你只需要通过`$S.Renderer`创建一个渲染器,通过`$S.Sampler`创建一个取样器即可,并在渲染循环中不断调用取样器的`sampling`函数进行取样,并将取样点交到渲染器中渲染即可。
当然,在运行代码之前不要忘记确认你的浏览器支持webgl!

## 写你自己的取样函数

```js
function power(n){
return {
f: () => {
let sample = [];
for(let i=0;i

函数名
参数
说明


constructor
(canvas,pSize=5)
结构体
@canvas 画布元素
@pSize 取样点大小


render
(samplerResult)
@samplerResult 取样器取样函数的返回结果

Sampler 取样器


属性名
类型
说明


sampleNum
int
取样数


divide
int
分布区间划分数目


函数名
参数
说明


constructor
(name,...attr)
结构体
@name 取样函数名
@attr 取样函数参数


addSampler
(name,f)
添加一个取样函数
@name 函数名
@f 函数体


sampling

执行取样函数,返回取样结果


print

打印各个分布区间的
取样个数和取样概率