#algorithm #efd #elliptical #fourier-descriptor

no-std efd

2D/3D Elliptical Fourier Descriptor (EFD) implementation in Rust

56 releases (14 stable)

new 2.1.0 Mar 28, 2023
1.3.2 Mar 23, 2023
1.0.2 Dec 29, 2022
0.26.1 Dec 14, 2022
0.5.0 Jul 20, 2021

#21 in No standard library

Download history 48/week @ 2022-12-06 102/week @ 2022-12-13 123/week @ 2022-12-20 71/week @ 2022-12-27 62/week @ 2023-01-03 66/week @ 2023-01-10 60/week @ 2023-01-17 68/week @ 2023-01-24 135/week @ 2023-01-31 128/week @ 2023-02-07 207/week @ 2023-02-14 207/week @ 2023-02-21 39/week @ 2023-02-28 96/week @ 2023-03-07 89/week @ 2023-03-14 185/week @ 2023-03-21

409 downloads per month
Used in 2 crates (via four-bar)

MIT license

56KB
1K SLoC

EFD Rust Library

dependency status documentation

Elliptical Fourier Descriptor (EFD) implementation in Rust. This crate implements 2D/3D EFD and its related functions.

Keyword Alias:

  • Elliptical Fourier Analysis (EFA)
  • Elliptical Fourier Function (EFF)

Reference: Kuhl, FP and Giardina, CR (1982). Elliptic Fourier features of a closed contour. Computer graphics and image processing, 18(3), 236-258.

This is an unofficial implementation.

@article{kuhl1982elliptic,
  title={Elliptic Fourier features of a closed contour},
  author={Kuhl, Frank P and Giardina, Charles R},
  journal={Computer graphics and image processing},
  volume={18},
  number={3},
  pages={236--258},
  year={1982},
  publisher={Elsevier}
}

Example of re-describing a new curve:

let curve = vec![
    [0., 0.],
    [1., 1.],
    [2., 2.],
    [3., 3.],
    [2., 2.],
    [1., 1.],
    [0., 0.],
];
let described_curve = efd::Efd2::from_curve(curve).unwrap().generate(20);

Dependencies

~5.5MB
~119K SLoC