rant_simulator/scan/adapters/
mod.rs1use super::ParameterAdapter;
2
3#[derive(Clone, Copy)]
4pub struct ParameterAdapter1DEven<State, Parameters> {
5 pub start: f64,
6 pub end: f64,
7 pub construct_initial_state_and_parameters: fn(f64) -> (State, Parameters), }
9
10impl<State, Parameters> ParameterAdapter<State, Parameters>
11 for ParameterAdapter1DEven<State, Parameters>
12{
13 type Vector = (usize, usize);
14
15 fn compute_initial_state_and_parameters(
16 &self,
17 (x, resolution): Self::Vector,
18 ) -> (State, Parameters) {
19 let x = lin_int(self.start, self.end, x, resolution);
20 (self.construct_initial_state_and_parameters)(x)
21 }
22}
23
24#[derive(Clone, Copy)]
25pub struct ParameterAdapter2DEven<State, Parameters> {
26 pub start: (f64, f64),
27 pub end: (f64, f64),
28 pub construct_initial_state_and_parameters: fn(f64, f64) -> (State, Parameters), }
30
31impl<State, Parameters> ParameterAdapter<State, Parameters>
32 for ParameterAdapter2DEven<State, Parameters>
33{
34 type Vector = [(usize, usize); 2];
35
36 fn compute_initial_state_and_parameters(
37 &self,
38 [(x, resolution_x), (y, resolution_y)]: Self::Vector,
39 ) -> (State, Parameters) {
40 let x = lin_int(self.start.0, self.end.0, x, resolution_x);
41 let y = lin_int(self.start.1, self.end.1, y, resolution_y);
42 (self.construct_initial_state_and_parameters)(x, y)
43 }
44}
45
46fn lin_int(a: f64, b: f64, x: usize, resolution: usize) -> f64 {
47 a + (x as f64 / resolution as f64) * (b - a)
48}