From 3bddd780e5129918d4e0b0b44f1ee481847a4468 Mon Sep 17 00:00:00 2001 From: randogoth Date: Tue, 26 Mar 2024 11:00:28 +0200 Subject: [PATCH] lib, rename, test (broken) --- Cargo.lock | 46 ++++++++++++++++++++--------------------- Cargo.toml | 8 ++++--- src/{main.rs => lib.rs} | 27 ------------------------ tests/test.rs | 31 +++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 53 deletions(-) rename src/{main.rs => lib.rs} (91%) create mode 100644 tests/test.rs diff --git a/Cargo.lock b/Cargo.lock index 44bfa25..49cef73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -31,9 +31,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bytemuck" @@ -391,9 +391,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -458,7 +458,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -476,9 +476,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "spade" @@ -524,28 +524,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.53" +version = "2.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "triturus" -version = "0.1.0" -dependencies = [ - "delaunator", - "geo", - "geo-types", - "itertools 0.12.1", - "rand", - "rayon", - "statrs", -] - [[package]] name = "typenum" version = "1.17.0" @@ -580,6 +567,19 @@ dependencies = [ "safe_arch", ] +[[package]] +name = "xenobalanus" +version = "0.1.1" +dependencies = [ + "delaunator", + "geo", + "geo-types", + "itertools 0.12.1", + "rand", + "rayon", + "statrs", +] + [[package]] name = "zerocopy" version = "0.7.32" @@ -597,5 +597,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] diff --git a/Cargo.toml b/Cargo.toml index 3e595b8..b73677e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,11 @@ [package] -name = "triturus" -version = "0.1.0" +name = "xenobalanus" +version = "0.1.1" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +name = "xenobalanus" +crate-type = ["cdylib"] [dependencies] delaunator = "1.0.2" diff --git a/src/main.rs b/src/lib.rs similarity index 91% rename from src/main.rs rename to src/lib.rs index 82b4394..d4b2738 100644 --- a/src/main.rs +++ b/src/lib.rs @@ -285,31 +285,4 @@ fn dtscan( } clusters -} - -fn main() { - let dots: u32 = 10000; - let side_length: f32 = 10000.0; - let points: Vec> = random_points((0.0, 0.0), side_length, dots); - println!("Generated {:#?} random dots", dots); - let triangles_indices: Vec = delaunay(&points); - println!("Generated Delaunay triangulation"); - - let geometry_data: GeometryData = preprocess(&points, &triangles_indices, 0); - - // Define minimum area and minimum distance for delfin function - let min_area: f32 = 1000.0; // threshold for voidness - let min_distance: f32 = 200.0; // threshold for minimum distance - - // Parameters for DTSCAN - let min_pts: usize = 5; // threshold for minimum number of points - let max_closeness: f32 = 100.5; // threshold for maximum closeness - - // Execute delfin function with the generated GeometryData - let void_polygons: Vec> = delfin(&geometry_data, min_area, min_distance); - println!("Found {:#?} Voids", void_polygons.len()); - - // Execute DTSCAN with the prepared data - let clusters: Vec> = dtscan(&geometry_data, min_pts, max_closeness); - println!("Found {:#?} Attractors", clusters.len()); } \ No newline at end of file diff --git a/tests/test.rs b/tests/test.rs new file mode 100644 index 0000000..85d1303 --- /dev/null +++ b/tests/test.rs @@ -0,0 +1,31 @@ +use geo::Point; +use std::collections::{HashSet}; +use xenobalanus::{delaunay, random_points, preprocess, dtscan, delfin, GeometryData}; + +#[test] +fn test() { + let dots: u32 = 10000; + let side_length: f32 = 10000.0; + let points: Vec> = random_points((0.0, 0.0), side_length, dots); + println!("Generated {:#?} random dots", dots); + let triangles_indices: Vec = delaunay(&points); + println!("Generated Delaunay triangulation"); + + let geometry_data: GeometryData = preprocess(&points, &triangles_indices, 0); + + // Define minimum area and minimum distance for delfin function + let min_area: f32 = 1000.0; // threshold for voidness + let min_distance: f32 = 200.0; // threshold for minimum distance + + // Parameters for DTSCAN + let min_pts: usize = 5; // threshold for minimum number of points + let max_closeness: f32 = 100.5; // threshold for maximum closeness + + // Execute delfin function with the generated GeometryData + let void_polygons: Vec> = delfin(&geometry_data, min_area, min_distance); + println!("Found {:#?} Voids", void_polygons.len()); + + // Execute DTSCAN with the prepared data + let clusters: Vec> = dtscan(&geometry_data, min_pts, max_closeness); + println!("Found {:#?} Attractors", clusters.len()); +} \ No newline at end of file