From a5786a657cd33bbf438ce1e0ff1c25ef92408c4e Mon Sep 17 00:00:00 2001 From: Dukantic Date: Thu, 29 May 2025 15:02:00 +0200 Subject: [PATCH] better setting for revolution --- src/main.rs | 32 +++++++++++++++++++------------- src/polygon_draw.rs | 1 - 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 2a83493..1a7b4d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,15 +1,14 @@ mod polygon_draw; -use iced::Subscription; -use iced::widget::canvas; -use iced::widget::{Checkbox, button, checkbox, column, row, text}; + use iced::{ Task, time::{self, Duration}, + widget::{button, canvas, column, row, text}, }; use polygon_draw::PolygonFrame; + use std::f32::consts::PI; use std::time::Instant; -use tokio::time::sleep; fn main() -> iced::Result { iced::application("My App", MyApp::update, MyApp::view) @@ -27,14 +26,14 @@ enum Message { struct MyApp { polys: PolygonFrame, time_last_frame: Instant, - revo_per_sec: f32, + revo_per_sec: u32, } impl MyApp { fn new() -> (Self, Task) { ( Self { - revo_per_sec: 1.0 / 2.0, + revo_per_sec: 1, time_last_frame: Instant::now(), polys: PolygonFrame { radius: 128.0, @@ -46,22 +45,29 @@ impl MyApp { } fn update(&mut self, message: Message) { match message { - Message::ButtonPressedIncrement => self.revo_per_sec *= 2.0, - Message::ButtonPressedDecrement => self.revo_per_sec /= 2.0, + Message::ButtonPressedIncrement => self.revo_per_sec += 1, + Message::ButtonPressedDecrement => { + if self.revo_per_sec > 1 { + self.revo_per_sec -= 1 + } + } Message::Tick => { let time_btw = Instant::now().duration_since(self.time_last_frame); - self.polys.teta += - 2.0 * PI * self.revo_per_sec * (time_btw.as_millis() as f32 / 1_000.0); + self.polys.teta += 2.0 + * PI + * (1.0 / self.revo_per_sec as f32) + * (time_btw.as_millis() as f32 / 1_000.0); self.polys.teta %= 2.0 * PI; - println!("Teta : {}", self.polys.teta); + //println!("Teta : {}", self.polys.teta); self.time_last_frame = Instant::now(); } } } fn view(&self) -> iced::Element { + let txt_nb_rev = format!("Revolution per second : {}", self.revo_per_sec); column![ - text(self.polys.radius), + text(txt_nb_rev), row![ button("Increment").on_press(Message::ButtonPressedIncrement), button("Decrement").on_press(Message::ButtonPressedDecrement), @@ -71,6 +77,6 @@ impl MyApp { .into() } fn subscription(&self) -> iced::Subscription { - time::every(Duration::from_millis(1)).map(|_| Message::Tick) + time::every(Duration::from_millis(16)).map(|_| Message::Tick) } } diff --git a/src/polygon_draw.rs b/src/polygon_draw.rs index 5722469..aaad4b0 100644 --- a/src/polygon_draw.rs +++ b/src/polygon_draw.rs @@ -6,7 +6,6 @@ use iced::widget::canvas; use iced::widget::canvas::Stroke; use iced::widget::canvas::Style; use iced::{Color, Rectangle, Renderer, Theme}; -use std::time::SystemTime; pub trait RotationExt { fn rotate(&mut self, teta: f32) -> Self;