aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 7cba3af3f64b6b7a2044334f36b8d2787fe633e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# curveipo - 2D curve interpolation

<https://bues.ch/>

<https://bues.ch/cgit/curveipors.git>

<https://github.com/mbuesch/curveipors>

# Example

    use curveipo::{Curve, prelude::*};

    // Float curve.
    let curve = Curve::new([
        // (x, y) curve point
        (1.0_f32, -20.0_f32),
        (2.0, 2.0),
        (10.0, 20.0),
        (20.0, -17.0),
    ]);

    // Linear interpolation in float curve with float result.
    let x = 3.0;
    let y_interpolated = curve.lin_inter(x);
    float_eq::assert_float_eq!(y_interpolated, 4.25, abs <= 0.001);

    // Integer curve.
    let curve = Curve::new([
        // (x, y) curve point
        (1_i16, -20_i16),
        (2, 2),
        (10, 20),
        (20, -17),
    ]);

    // Linear interpolation in integer curve with rounded integer result.
    let x = 3;
    let y_interpolated = curve.lin_inter(x);
    assert_eq!(y_interpolated, 4);

# License

Copyright (c) 2022 Michael Büsch <m@bues.ch>

Licensed under the Apache License version 2.0 or the MIT license, at your option.

SPDX-License-Identifier: Apache-2.0 OR MIT
bues.ch cgit interface