3个不稳定版本

0.2.1 2021年8月11日
0.2.0 2021年8月11日
0.1.0 2021年8月10日

游戏开发分类中排名1309

MIT许可证

21KB
458 代码行

ConvChain (Rust版本)

Maxim Gumin的ConvChain的Rust移植版

ConvChain是一系列图像的马尔可夫链,收敛到类似于输入的图像。也就是说,随着过程的进行,输出中NxN模式的分布会收敛到输入中NxN模式的分布。

请参考原始仓库以获取关于将Metropolis算法应用于该问题的更详细描述。

fn main() {
    // Generate a sample (this is the SimpleMaze example):
    let pattern = [
        true,  true,  true,  true,
        true, false, false, false,
        true, false,  true, false,
        true, false, false, false,
    ];
    let sample = ConvChainSample::new(&pattern, 4, 4);

    // Initialize the chain using given sample and a
    // - 32x32 output size
    // - receptor size of 2
    // - temperature of 1.0
    let mut chain = ConvChain::new(&sample, 32, 2, 1.0);
    
    // Generate the 32x32 field using 10 iterations.
    let field: &[bool] = chain.process(10);
}

示例运行

以下是使用不同的受体大小和迭代次数生成的几个输出

输入 r=3, it=10 r=5, it=10 r=5, it=20 r=5, it=100

此仓库提供了原始“慢速”和“快速”实现的端口。要运行示例,请从仓库根目录执行以下操作

$ cargo run --release --example fast

这将处理resources/samples.xml中定义的工作,并在当前目录中生成输出图像。

要运行基准测试,执行

$ cargo bench

依赖项

~305KB