2024-08-15 22:17:26 +03:00
|
|
|
use crate::model::Frequency;
|
|
|
|
|
|
|
|
use gio::{prelude::Cast, ListStore};
|
|
|
|
|
2024-08-02 00:04:37 +03:00
|
|
|
#[allow(non_snake_case)]
|
2024-04-19 00:30:51 +03:00
|
|
|
pub fn reactive_resistance_of_capacitor(Cm: f64, L: f64, f: f64) -> f64 {
|
2024-08-02 23:01:58 +03:00
|
|
|
if f == 0.0 || Cm == 0.0 || L == 0.0 {
|
|
|
|
0.0
|
|
|
|
} else {
|
|
|
|
1f64 / (2f64 * std::f64::consts::PI * f * Cm * L)
|
|
|
|
}
|
2024-04-19 00:30:51 +03:00
|
|
|
}
|
|
|
|
|
2024-08-02 00:04:37 +03:00
|
|
|
#[allow(non_snake_case)]
|
2024-04-19 00:30:51 +03:00
|
|
|
pub fn full_resistance_of_capacitor(Xc: f64, Rs: f64, Rm: f64, L: f64) -> f64 {
|
2024-08-09 16:51:07 +03:00
|
|
|
(Xc.powi(2) + (Rs + Rm * L).powi(2)).sqrt()
|
2024-04-19 00:30:51 +03:00
|
|
|
}
|
|
|
|
|
2024-08-02 00:04:37 +03:00
|
|
|
#[allow(non_snake_case)]
|
2024-04-19 00:30:51 +03:00
|
|
|
pub fn voltage_from_signal_source(Vs: f64, Xc: f64, Z: f64) -> f64 {
|
2024-08-02 23:01:58 +03:00
|
|
|
if Z == 0.0 {
|
|
|
|
0.0
|
|
|
|
} else {
|
|
|
|
(Vs * Xc) / Z
|
|
|
|
}
|
2024-04-19 00:30:51 +03:00
|
|
|
}
|
|
|
|
|
2024-08-02 00:04:37 +03:00
|
|
|
#[allow(non_snake_case)]
|
2024-04-19 00:30:51 +03:00
|
|
|
pub fn coef_of_signal_reduce(Vs: f64, V: f64) -> f64 {
|
2024-08-02 23:01:58 +03:00
|
|
|
if V == 0.0 {
|
|
|
|
0.0
|
|
|
|
} else {
|
|
|
|
Vs / V
|
|
|
|
}
|
2024-04-19 00:30:51 +03:00
|
|
|
}
|
2024-08-15 22:27:36 +03:00
|
|
|
|
|
|
|
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<u32> {
|
|
|
|
model.find_with_equal_func(|elem| {
|
|
|
|
elem.downcast_ref::<Frequency>().unwrap().frequency() == new_elem.frequency()
|
|
|
|
})
|
|
|
|
}
|