catenary

Crates.iocatenary
lib.rscatenary
version
sourcesrc
created_at2025-02-21 10:26:23.514615+00
updated_at2025-03-31 12:44:44.710404+00
descriptionA library for catenary curves
homepagehttps://gitlab.com/youbihub/catenary
repositoryhttps://gitlab.com/youbihub/catenary
max_upload_size
id1563911
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
(huand)

documentation

https://docs.rs/catenary

README

Catenary

Catenary is a Rust library for calculating catenary curves. It provides tools to model the shape of a hanging flexible chain or cable under its own weight.

Features

  • Calculate catenary curves from given parameters
  • Easy to integrate with other Rust projects

Installation

Add this to your Cargo.toml:

[dependencies]
catenary = "0.1.0"

Generate coefficient table

In order to quickly find catenary, with 2 points and a length, we can interpolate between catenaries that have been saved into a table. To regenerate this table, do:

cargo run --bin generate_table -- --help

Getting the desired catenary by interpolation from the table is done with this function:

let cat = table.get_catenary::<f64>(&p0, &p1, &l).unwrap();

Or just download them

let path = get_dataset_path().await.unwrap();

Usage

Here is a simple example of how to use Catenary:

extern crate catenary;

use catenary::Catenary;

fn main() {
    let catenary = Catenary::new(1.1, 2.2, 3.3, -4.4, 5.5);
    let (p0, p1) = catenary.end_points();

    let solved = Catenary64::from_points_length(&p0, &p1, catenary.length()).unwrap();

    assert_relative_eq!(catenary.a, solved.a, epsilon = 1e-5);
    assert_relative_eq!(catenary.c, solved.c, epsilon = 1e-5);
    assert_relative_eq!(catenary.h, solved.h, epsilon = 1e-5);
}

License

This project is licensed under the MIT or Apache-2.0 Licenses.

Contribution

Contributions are welcome! Please open an issue or submit a pull request on GitLab.

Commit count: 0

cargo fmt