diff --git a/Cargo.toml b/Cargo.toml index ae8c288..08eef8f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ num-traits = "0.2" [dev-dependencies] assert_approx_eq = "1" gnuplot = "0.0" +rerun = "0.19" [lints] workspace = true diff --git a/examples/rerun.rs b/examples/rerun.rs new file mode 100644 index 0000000..d6d9930 --- /dev/null +++ b/examples/rerun.rs @@ -0,0 +1,32 @@ +use trajectory::CubicSpline; +use trajectory::Trajectory; + +fn main() -> Result<(), Box> { + let rec = rerun::RecordingStreamBuilder::new("trajectory").spawn()?; + + let times = vec![0.0, 1.0, 3.0, 4.0]; + let points = vec![ + vec![0.0, -1.0], + vec![2.0, -3.0], + vec![3.0, 3.0], + vec![1.0, 5.0], + ]; + let ip = CubicSpline::new(times, points).unwrap(); + + for i in 0..400 { + let t = i as f64 * 0.01; + let p = ip.position(t).unwrap(); + let v = ip.velocity(t).unwrap(); + let a = ip.acceleration(t).unwrap(); + + rec.set_time_seconds("time", t); + rec.log("x/trajectory/position", &rerun::Scalar::new(p[0]))?; + rec.log("y/trajectory/position", &rerun::Scalar::new(p[1]))?; + rec.log("x/trajectory/velocity", &rerun::Scalar::new(v[0]))?; + rec.log("y/trajectory/velocity", &rerun::Scalar::new(v[1]))?; + rec.log("x/trajectory/acceleration", &rerun::Scalar::new(a[0]))?; + rec.log("y/trajectory/acceleration", &rerun::Scalar::new(a[1]))?; + } + + Ok(()) +}