1use colorimetry_plot::{chart::XYChart, style_attr::class, svgdoc::SvgDocument};
2
3const STYLE: &str = include_str!("sine_curve.scss");
4
5pub fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let pi = std::f64::consts::PI;
7 let pi2 = 2.0 * pi;
8
9 const N: i32 = 100;
10 let sin: Vec<(f64, f64)> = (0..N)
11 .map(|i| {
12 let x = i as f64 * pi2 / (N as f64 - 1.0);
13 (x, x.sin())
14 })
15 .collect();
16
17 let chart = XYChart::new((600, 300), (..pi2, -1.1..1.1))
18 .x_labels(1.0, 10, None)
19 .y_labels(0.5, 10, None)
20 .x_axis_description("x", None)
21 .y_axis_description("sin(x)", None)
22 .plot_grid(0.2, 0.1, class("fine-grid"))
23 .plot_grid(1.0, 0.5, class("grid"))
24 .plot_poly_line(sin, class("curve"))
25 .plot_poly_line(vec![(0.0, 0.0), (pi2, 0.0)], class("base-line"));
26
27 SvgDocument::new()
28 .append_scss(STYLE)
29 .add_plot(Box::new(chart))
30 .save("docs/img/sine_curve.svg")
31}