Created basic sinus output via postcard rpc.

This commit is contained in:
2025-08-06 18:26:17 +02:00
parent 2d8c6d23fd
commit 0b55cdf8b8
10 changed files with 3384 additions and 29 deletions

42
src/plot.rs Normal file
View File

@@ -0,0 +1,42 @@
use std::collections::VecDeque;
use egui_plot::{PlotPoint, PlotPoints};
pub struct TimeSeriesPlot {
pub values: VecDeque<PlotPoint>,
max_points: usize,
}
impl TimeSeriesPlot {
pub fn new() -> Self {
let max_points = 2000;
Self {
values: (0..max_points as i32)
.map(|i| PlotPoint::new(i, 0.0))
.collect(), // Create x amount of (0,0) points
max_points,
}
}
pub fn add(&mut self, val: f64) {
let last_x = self.values.back().unwrap().x;
if last_x >= self.max_points as f64 {
self.values.pop_front();
}
self.values.push_back(PlotPoint::new(last_x + 1.0, val));
}
pub fn plot_values(&self) -> PlotPoints {
PlotPoints::Owned(Vec::from_iter(self.values.iter().copied()))
}
pub fn plot_values_negative(&self) -> PlotPoints {
let mut values = Vec::from_iter(self.values.iter().copied());
for point in &mut values {
point.y = -point.y;
}
PlotPoints::Owned(Vec::from_iter(values))
}
}