From c7760e2123a5190e22f87b6d678b79e86c274c30 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Fri, 5 Dec 2025 20:14:48 -0500 Subject: [PATCH] FunctionEntry: generate_plot_data helper --- src/function_entry.rs | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/function_entry.rs b/src/function_entry.rs index e563c2c..6a32672 100644 --- a/src/function_entry.rs +++ b/src/function_entry.rs @@ -276,6 +276,17 @@ impl FunctionEntry { .collect() } + /// Generates plot data for a given derivative level over the resolution iterator + fn generate_plot_data(&mut self, derivative: usize, resolution_iter: &[f64]) -> Vec { + if derivative > 0 { + self.function.generate_derivative(derivative); + } + resolution_iter + .iter() + .map(|&x| PlotPoint::new(x, self.function.get(derivative, x))) + .collect() + } + /// Does the calculations and stores results in `self` pub fn calculate( &mut self, @@ -304,32 +315,17 @@ impl FunctionEntry { } if self.back_data.is_empty() { - let data: Vec = resolution_iter - .clone() - .into_iter() - .map(|x| PlotPoint::new(x, self.function.get(0, x))) - .collect(); - debug_assert_eq!(data.len(), settings.plot_width + 1); - - self.back_data = data; + self.back_data = self.generate_plot_data(0, &resolution_iter); + debug_assert_eq!(self.back_data.len(), settings.plot_width + 1); } if self.derivative_data.is_empty() { - self.function.generate_derivative(1); - let data: Vec = resolution_iter - .clone() - .into_iter() - .map(|x| PlotPoint::new(x, self.function.get(1, x))) - .collect(); - debug_assert_eq!(data.len(), settings.plot_width + 1); - self.derivative_data = data; + self.derivative_data = self.generate_plot_data(1, &resolution_iter); + debug_assert_eq!(self.derivative_data.len(), settings.plot_width + 1); } if self.nth_derviative && self.nth_derivative_data.is_none() { - let data: Vec = resolution_iter - .into_iter() - .map(|x| PlotPoint::new(x, self.function.get(self.curr_nth, x))) - .collect(); + let data = self.generate_plot_data(self.curr_nth, &resolution_iter); debug_assert_eq!(data.len(), settings.plot_width + 1); self.nth_derivative_data = Some(data); }