Make "calories burned per day" more dependent on my current weight
... If the previous numbers were based on some kind of research... oops :P
This commit is contained in:
parent
cfd92c982e
commit
c86daeaa4b
@ -11,10 +11,11 @@ use time::Date;
|
||||
use time::*;
|
||||
|
||||
const MEALS_PER_DAY: f32 = 2.3;
|
||||
const MYSTERY_MEAL_MIN_CALORIES: f32 = 800.;
|
||||
const SMOOTHING_DAYS: usize = 21;
|
||||
const CALORIES_BURNED_PER_DAY: f32 = 2270.;
|
||||
const CALORIES_BURNED_PER_DAY: f32 = 2350.;
|
||||
const CALORIES_BURNED_PER_DAY_BASE_WEIGHT: f32 = 83.;
|
||||
const CALORIES_BURNED_LESS_PER_DAY_PER_KG: f32 = 12.5;
|
||||
const CALORIES_BURNED_LESS_PER_DAY_PER_KG: f32 = 27.;
|
||||
|
||||
fn time_date_to_chrono_naive_date(d: Date) -> chrono::NaiveDate {
|
||||
chrono::NaiveDate::from_ymd_opt(d.year(), d.month() as u32, d.day() as u32).unwrap()
|
||||
@ -61,7 +62,8 @@ fn calculate_calories_per_day(
|
||||
}
|
||||
});
|
||||
mystery_meals.iter().enumerate().for_each(|(i, amount)| {
|
||||
let calories = calorie_days[i] / MEALS_PER_DAY * *amount as f32;
|
||||
let calories = (calorie_days[i] / MEALS_PER_DAY * *amount as f32)
|
||||
.max(MYSTERY_MEAL_MIN_CALORIES * *amount as f32);
|
||||
let calories_smoothed = calories / SMOOTHING_DAYS as f32;
|
||||
|
||||
for item in &mut calorie_days[i..i + SMOOTHING_DAYS] {
|
||||
@ -267,6 +269,15 @@ pub fn plot_weight_loss(
|
||||
.reduce(|a, b| a.min(b))
|
||||
.unwrap();
|
||||
|
||||
let min_deficit: f32 = deficit_days
|
||||
.iter()
|
||||
// the non-calories values is an offset to make the two plotted lines fit
|
||||
.map(|w| *w / 7000. + (weight[0].weight + 1.))
|
||||
.reduce(|a, b| a.min(b))
|
||||
.unwrap();
|
||||
|
||||
let min_graph_y = min_weight.min(min_deficit);
|
||||
|
||||
let plotfun = Box::new(move |root: plotting::SVGPlotRoot| {
|
||||
root.fill(&WHITE).unwrap();
|
||||
let mut chart = ChartBuilder::on(&root)
|
||||
@ -277,12 +288,12 @@ pub fn plot_weight_loss(
|
||||
.right_y_label_area_size(50)
|
||||
.build_cartesian_2d(
|
||||
mindate_chrono..maxdate_chrono,
|
||||
(min_weight - 2.)..(max_weight + 2.),
|
||||
(min_graph_y - 2.)..(max_weight + 2.),
|
||||
)
|
||||
.unwrap()
|
||||
.set_secondary_coord(
|
||||
mindate_chrono..maxdate_chrono,
|
||||
(min_weight - max_weight - 2.)..2.,
|
||||
(min_graph_y - max_weight - 2.)..2.,
|
||||
);
|
||||
|
||||
chart
|
||||
@ -301,7 +312,7 @@ pub fn plot_weight_loss(
|
||||
chart
|
||||
.draw_series(LineSeries::new(
|
||||
vec![
|
||||
(today_chrono, min_weight - 2.),
|
||||
(today_chrono, min_graph_y - 2.),
|
||||
(today_chrono, max_weight + 2.),
|
||||
],
|
||||
BLACK.stroke_width(2),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user