use crate::model::Frequency; use gio::{prelude::Cast, ListStore}; #[allow(non_snake_case)] pub fn reactive_resistance_of_capacitor(Cm: f64, L: f64, f: f64) -> f64 { if f == 0.0 || Cm == 0.0 || L == 0.0 { 0.0 } else { 1f64 / (2f64 * std::f64::consts::PI * f * Cm * L) } } #[allow(non_snake_case)] pub fn full_resistance_of_capacitor(Xc: f64, Rs: f64, Rm: f64, L: f64) -> f64 { (Xc.powi(2) + (Rs + Rm * L).powi(2)).sqrt() } #[allow(non_snake_case)] pub fn voltage_from_signal_source(Vs: f64, Xc: f64, Z: f64) -> f64 { if Z == 0.0 { 0.0 } else { (Vs * Xc) / Z } } #[allow(non_snake_case)] pub fn coef_of_signal_reduce(Vs: f64, V: f64) -> f64 { if V == 0.0 { 0.0 } else { Vs / V } } pub fn set_default_values(model: &ListStore) { for number in (0..=100).step_by(5) { if number == 0 { model.append(&Frequency::new(1.0)); } else if (number >= 70 && number % 10 == 0) || (number < 70 && number % 5 == 0) { model.append(&Frequency::new(number as f64)); } } } pub fn find_by_frequency_value(model: &ListStore, new_elem: &Frequency) -> Option { model.find_with_equal_func(|elem| { elem.downcast_ref::().unwrap().frequency() == new_elem.frequency() }) }