#lazy-evaluation #algorithm #randomness #diamond-square #generate #builder #seed

lazy_diamond_square

Lazy implementation of the diamond-square without randomness

5 releases (2 stable)

1.1.0 Dec 28, 2023
1.0.0 Aug 19, 2023
0.2.0 Aug 2, 2023
0.1.1 Aug 1, 2023
0.1.0 Jul 26, 2023

#456 in Algorithms

40 downloads per month
Used in lds_simple_view

MIT/Apache

35KB
749 lines

Lazy Diamond-Square

The lazy_diamond_square allow you to use the Diamond-Square algorithm to generate your own landscapes or anything else where it might come in handy.

Example

use lazy_diamond_square as lds;
use lds::{Builder, InitBy as By};

fn main() {
    let mut map = Builder::new(513, 0.15)
        .seed("qwerty")
        .init_lvl(2)
        .init_by(By::Seed)
        .build();
    let max_coord = map.max_coord();

    map.gen_area((0, 0), (max_coord, max_coord));
    map.get_img((0, 0), (max_coord, max_coord), Some("view.png"));
}

Examples of work

roughness = 0.15, Seed("view1.png") Example 1: roughness = 0.15, Seed("view1.png")

roughness = 0.2, Seed("view2.png") Example 2: roughness = 0.2, Seed("view2.png")

roughness = 0.2, Seed("view3.png"), InitLevel(4) Example 3: roughness = 0.2, Seed("view3.png"), InitLevel(4)

Sources

Conclusion

I just wanted to let you know that I'm 13 and this is my first serious project, so I'll be only glad for criticism and advice on how to improve my project. All text in this file is translated with the help of a translator, because I don't know English so well yet.

Dependencies

~0.1–3MB
~13K SLoC