efd

Crates.ioefd
lib.rsefd
version10.1.3
sourcesrc
created_at2021-04-16 10:15:00.752679
updated_at2024-05-26 07:42:49.90112
description1D/2D/3D Elliptical Fourier Descriptor (EFD) implementation in Rust.
homepage
repositoryhttps://github.com/KmolYuan/efd-rs
max_upload_size
id385261
size211,399
Yuan Chang (KmolYuan)

documentation

README

EFD Rust Library

dependency status documentation

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

This implementation is totally safe and supports no-std + alloc environment.

Keyword Alias:

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

Example of re-describing a new closed curve:

let curve = vec![
    [0., 0.],
    [1., 1.],
    [2., 2.],
    [3., 3.],
    [2., 2.],
    [1., 1.],
];
assert!(efd::util::valid_curve(&curve).is_some());
let described_curve = efd::Efd2::from_curve(curve, false).recon(20);

The harmonic number can be set with efd::Efd::from_curve_harmonic() method. The following figures show the reconstruction of a 2D closed curve with 1-8 harmonics.

1h 2h 3h 4h
5h 6h 7h 8h

Example Images

2D and 3D closed curve:

2d 3d

2D and 3D open curve:

2d 3d

Posed EFD combined a curve with a pose (unit vectors) to describe the orientation of each point.

2D open curve and its full reconstruction:

posed posed-full

Citations

Original

My Applications

  • Chang, Y., Chang, JL., Lee, JJ. (2024). Atlas-Based Path Synthesis of Planar Four-Bar Linkages Using Elliptical Fourier Descriptors. In: Okada, M. (eds) Advances in Mechanism and Machine Science. IFToMM WC 2023. Mechanisms and Machine Science, vol 149. Springer, Cham. https://doi.org/10.1007/978-3-031-45709-8_20
  • Chang, Y., Chang, JL. & Lee, JJ. Path Synthesis of Planar Four-bar Linkages for Closed and Open Curves Using Elliptical Fourier Descriptors. J Mech Sci Technol (2024). http://doi.org/10.1007/s12206-024-0436-y
Commit count: 506

cargo fmt