fastcurve_3d 0.1.1

Library for 3D and 2D fast curve generation
Documentation
# Rust Fast Curve 3d

[![crates.io](https://img.shields.io/crates/v/fastcurve_3d.svg)](https://crates.io/crates/fastcurve_3d)
![Rust](https://github.com/gberrante/fastcurve_3d/workflows/Rust/badge.svg)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![codecov](https://codecov.io/gh/gberrante/fastcurve_3d/branch/master/graph/badge.svg)](https://codecov.io/gh/gberrante/fastcurve_3d)

This algorithm is generates a curve from a list of control points.

## References: 

Original paper: G. M. Chaikin, “An algorithm for high-speed curve generation, Computer Graphics and Image Processing,” vol. 3, 1974, pp. 346-349
[On Chaikin's algorithm R.F.Riesenfeld](https://www.sciencedirect.com/science/article/abs/pii/0146664X75900179)

The library contains the following functions:
- fast_curve_2d for generating curves in 2D.
- fast_curve_3d for generating curves in 3D.

## Examples:

For the examples the [rust gnuplot](https://crates.io/crates/gnuplot) library is used.

### 3d curve generation

```rust
    let x = vec![1.0,1.0,4.0,5.0,2.0];
    let y = vec![1.0,2.0,0.5,1.0,2.0];
    let z = vec![1.0,2.0,0.8,1.0,1.5];
    let n: u8 = 4;

    let (xn,yn,zn) = fast_curve_3d(&x, &y, &z, n);

    // gnu plot Figure
    let mut fg = Figure::new();
    fg.axes3d()
    .lines(&x, &y, &z,&[Caption("Original"), Color("blue")])
    .lines(&xn, &yn, &zn, &[Caption("Smoothed"), Color("red")]);
    fg.set_scale(1.0, 1.0);
    fg.show().unwrap();
```
![alt text](./3dexample.png "3d curve")

### 2d curve generation

```rust
    let x = vec![1.0,1.0,4.0,5.0,2.0];
    let y = vec![1.0,2.0,0.5,1.0,2.0];
    let n: u8 = 4;

     let (xn,yn) = fast_curve_2d(&x, &y, n);


    let mut fg = Figure::new();
    fg.axes2d()
    .lines(&x, &y,&[Caption("Original"), Color("blue")])
    .lines(&xn, &yn, &[Caption("Smoothed"), Color("red")]);
    
    fg.set_scale(1.0, 1.0);
    fg.show().unwrap();
```
![alt text](./2dexample.png "3d curve")