rust-fractal / rust-fractal-core Goto Github PK
View Code? Open in Web Editor NEWMandelbrot fractal visualizer featuring perturbation based iteration methods, series approximation and multithreading.
License: GNU General Public License v3.0
Mandelbrot fractal visualizer featuring perturbation based iteration methods, series approximation and multithreading.
License: GNU General Public License v3.0
The dependency parking_lot
needs to be updated to the latest version (0.12
) to successfully compile rust-fractal-gui since rust-fractal/rust-fractal-gui#3 was merged.
Sometimes with the new glitch correction algorithm, some arrays are accessed out of bounds. This need to be investigated.
Currently, the mantexp library is not very good. This will need to be revised into a full extended float library, with optimizations for complex numbers.
One such optimization is that a complex number can be represented with a common exponent, provided the real and imaginary parts are close enough to each other. This will simplify and optimize the current code.
I think the only time it is not safe to use frexp is for special values like 0, inf, nan. Though the range check may be a small optimization, if it took negative mantissa into account?
The current palette algorithm is hardcoded and therefore a new system should be implemented to allow for custom user defined palettes.
The series approximation can calculate the coefficients correctly, however it cannot at the moment choose the correct number of iterations to skip. There are a few automated checks to implement here.
Series approximation methods allow for a dramatic speedup particularly on deep zoom levels. In order for them to be implemented there will need to be a floatexp class containing a floating point number as well as an integer exponent.
In order to reuse the reference some of the program has to be reorganized:
Cargo does not successfully build on current Mac OS (Ventura 13.0).
I have found the workaround:
Usage hint:
cargo build --release
finishes, in the git repo folder (where Cargo.toml lives), remember to mkdir output
(otherwise program will panic and quit) and then try running ./target/release/main -o default.toml locations/flake.toml
error[E0557]: feature has been removed
--> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/lock_api-0.4.2/src/lib.rs:91:42
|
91 | #![cfg_attr(feature = "nightly", feature(const_fn))]
| ^^^^^^^^ feature has been removed
|
= note: split into finer-grained feature gates
The current algorithm checks the approximation every iteration. It would be possible to check only once every 100 iterations and back step when the approximation is no longer valid.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.