version = "0.0.0"
edition = "2024"
-[dependencies]
\ No newline at end of file
+[dependencies]
+anyhow = "1.0.102"
+csv = "1.4.0"
+nalgebra = "0.34.2"
+serde = { version = "1.0.228", features = ["derive"] }
+structs = {path = "../structs"}
-fn main() {
- println!("Hello, world!");
+use anyhow::{Result, bail};
+use csv::ReaderBuilder;
+use nalgebra::{Point2, Rotation2, Vector2};
+use structs::*;
+
+fn main() -> Result<()> {
+ let mut reader = ReaderBuilder::new()
+ .has_headers(false)
+ .from_path("../generator/records.csv")?;
+ let records: std::result::Result<Vec<Record>, csv::Error> =
+ reader.deserialize::<Record>().collect();
+
+ let records = records?;
+
+ let mut points: Vec<Point2<f64>> = vec![];
+
+ for record in records {
+ points.push(record_to_point(&record));
+ }
+
+ dbg!(points);
+
+ Ok(())
+}
+
+fn record_to_point(record: &Record) -> Point2<f64> {
+ let cart_pos = Point2::new(record.cart_pos.0, record.cart_pos.1);
+ let cart_rot = Rotation2::new(record.cart_rot);
+
+ let distance: Vector2<f64> = (cart_rot * Vector2::new(0.0, 1.0)) * record.distance;
+
+ Point2::from(distance + Vector2::from(cart_pos.coords))
}
pub cart_rot: Rotation2<f64>,
}
-#[derive(Debug, Serialize)]
+#[derive(Debug, Serialize, Deserialize)]
pub struct Record {
pub cart_pos: (f64, f64),
- ///radians
+ /// radians
pub cart_rot: f64,
pub distance: f64,
}