#分形 #图像 #2D渲染 #2D #渲染 #分形 #并发

app crispy_octo_fractals

用于定制分形的线程渲染系统

2个版本

0.5.1 2021年3月5日
0.5.0 2021年3月5日

#646图像

MIT 许可证

37KB
571

crispy_octo_fractals

用于生成和放大定制分形的库。

这是一个非常非常非常初级的版本。它可以运行以生成一个800 x 600的屏幕,显示曼德布罗特集。每次按下一个键盘键之前,请等待屏幕渲染。以下是控制键

  • W A S D:将移动命令发送到窗口。

  • Q E:分别缩小和放大。

  • Esc:关闭窗口和进程。

  • Enter:将当前图像保存到文件夹"/src/saved_images/test.png"。

如果您同时按多个键,它将按顺序冻结运行每个按下的键。如果您通过alt-tab或点击窗口外部将注意力从屏幕移开,它将停止处理事件,直到将焦点返回到屏幕(我想,我今早完成了这个版本)。

所以如果它冻结了,请按ctrl-c强制关闭窗口。

以下是即将到来的更新

  • 将使用async允许屏幕在渲染图片时移动。

  • 将创建一个用于颜色的trait,以便可以用于生成图片的多个不同功能。它将位于目录"/src/libs/fractal/fractal_state/"中。

  • 将创建一个位于"/src/libs/fractal/fractal_state/"的用于处理图像的trait。

  • 将更新处理,以便将图像缓冲到gpu而不是由处理器迭代。

好的,但这是什么意思呢?

分形是使用复杂函数生成图片的时髦流行元素。屏幕上的每个像素都是一个坐标,算法迭代增加一个值,直到它达到某个有效条件(或达到最大迭代次数)。

分形的白色部分是达到最大迭代次数的区域。深色区域是需要最低迭代次数的区域。中间的每种颜色只是为了看起来漂亮。

美丽的分形可以非常有趣地放大查看,但它们也需要大量的处理能力来生成。因此,多线程是唯一的选择。我正在使用我的库 kik_sync_service 同时使用 32 个线程。

这对于练习低级、高性能编程来说是一个很好的选择。我为此做了很多研究,但这只是触及到冰山一角。还有很长的路要走。

如何安装和使用它

安装 Rust:它非常快,通常只需要几条命令行。 https://www.rust-lang.net.cn/tools/install

cd 进入一个空文件夹以复制此项目。

使用以下方式复制此项目:

git clone https://github.com/On0n0k1/crispy_octo_fractals.git

使用以下方式编译项目:

cargo build

这需要一些时间来下载和安装所有依赖项。同时,也会有大量的“死代码”警告。

使用以下方式运行项目:

cargo run

可选:运行得更快

前一种方法有效,但它是调试模式。这样会更快

cargo build --release

这将把所有内容编译成一个单一的可执行文件。它将在文件夹 "./target/release/" 中。

cd ./target/release/

./crispy-octo-fractals

它在我的 Linux 计算机上运行。不确定它在 Windows 计算机上会是什么样子。但它们将在同一个文件夹中。

编辑:发布、优化版本仍然在保存图像时失败。请仅在调试模式下保存图像(通过按 Enter 键)。

依赖项

~16MB
~128K SLoC