1use bland::{Figure, PaperSize};
2
3fn main() {
4 let n = 41;
6 let pi = std::f64::consts::PI;
7 let grid: Vec<Vec<f64>> = (0..n)
8 .map(|j| {
9 let y = -pi + 2.0 * pi * j as f64 / (n - 1) as f64;
10 (0..n)
11 .map(|i| {
12 let x = -pi + 2.0 * pi * i as f64 / (n - 1) as f64;
13 x.sin() * y.cos()
14 })
15 .collect()
16 })
17 .collect();
18
19 let edges: Vec<f64> = (0..=n)
20 .map(|i| -pi + 2.0 * pi * i as f64 / n as f64)
21 .collect();
22
23 let levels = vec![-0.8, -0.4, 0.0, 0.4, 0.8];
24
25 let fig = Figure::new()
26 .size(PaperSize::Square)
27 .title("sin(x) · cos(y)")
28 .xlabel("x")
29 .ylabel("y")
30 .contour(grid, |c| {
31 c.x_edges(edges.clone())
32 .y_edges(edges.clone())
33 .levels(levels)
34 .label("isolines")
35 })
36 .legend_top_right();
37
38 std::fs::create_dir_all("out").expect("create out/");
39 std::fs::write("out/contour.svg", fig.to_svg()).expect("write svg");
40 println!("wrote out/contour.svg");
41}