From a0287fa69f3ead5426c71b904300bcb5b6786ed6 Mon Sep 17 00:00:00 2001 From: iceyrazor Date: Sun, 8 Feb 2026 14:59:09 -0600 Subject: rename --- src/bin/1-5-0-normalize.rs | 107 +++++++++++++++++++++++++++++++++++++++++++++ src/bin/1-5-normalize.rs | 107 --------------------------------------------- 2 files changed, 107 insertions(+), 107 deletions(-) create mode 100644 src/bin/1-5-0-normalize.rs delete mode 100644 src/bin/1-5-normalize.rs (limited to 'src/bin') diff --git a/src/bin/1-5-0-normalize.rs b/src/bin/1-5-0-normalize.rs new file mode 100644 index 0000000..e7c50b5 --- /dev/null +++ b/src/bin/1-5-0-normalize.rs @@ -0,0 +1,107 @@ +extern crate sdl2; + +use sdl2::pixels::Color; +use sdl2::event::Event; +use sdl2::keyboard::Keycode; +use sdl2::rect::{Rect}; +use sdl2::render::WindowCanvas; +use std::time::Duration; + +struct ObjectG{ + x: i32, + y: i32, + screen_width: i32, + screen_height: i32, + vx: i32, + vy: i32, +} + +fn distance(x: f64,y: f64,x2: f64,y2: f64) -> f64 { + ((x2 - x).powi(2) + (y2 - y).powi(2)).sqrt() +} + +impl ObjectG{ + fn walk(&mut self, x: &i32, y: &i32) { + self.vx = x - self.x; + self.vy = y - self.y; + + // normalize is vec / mag + // this normalize is a bit more complicated because of me using screen / 2 + // normally you use the first 2 of distance at 0,0 + + //get the distance + let mag: f64 = distance((self.screen_width/2) as f64, (self.screen_height/2) as f64,*x as f64,*y as f64); + //normalize + self.vx = ((self.vx as f64 / mag ) * 50.0) as i32; + self.vy = ((self.vy as f64 / mag ) * 50.0) as i32; + + self.vx = self.vx + self.screen_width/2; + self.vy = self.vy + self.screen_height/2; + + if self.x < 0 { self.x = 0 } + if self.y < 0 { self.y = 0 } + if self.x > self.screen_width { self.x = self.screen_width } + if self.y > self.screen_height{ self.y = self.screen_height } + } +} + +fn draw(canvas: &mut WindowCanvas, obj: &mut ObjectG, mx: &i32, my: &i32){ + + canvas.set_draw_color(Color::RGB(0,0,0)); + canvas.clear(); + canvas.set_draw_color(Color::RGB(150,50,255)); + + obj.walk(mx,my); + canvas.fill_rect(Rect::new(obj.vx, obj.vy, 8, 8)).err(); + + canvas.present(); +} + + + +fn main() { + let sdl2_context = sdl2::init().unwrap(); + let video_subsystem = sdl2_context.video().unwrap(); + + + let width: u32=400; + let height: u32=400; + + let window = video_subsystem.window("normalize", width, height) + .position_centered() + .build() + .unwrap(); + + let mut canvas = window.into_canvas().build().unwrap(); + + + let mut obj = ObjectG{ + x: width as i32 /2, + y: height as i32 /2, + screen_width: width as i32, + screen_height: height as i32, + vx: 0, + vy: 0, + }; + + canvas.set_draw_color(Color::RGB(0,0,0)); + canvas.clear(); + + let mut event_pump = sdl2_context.event_pump().unwrap(); + draw(&mut canvas, &mut obj, &0, &0); + 'running: loop { + let state = event_pump.mouse_state(); + draw(&mut canvas, &mut obj, &state.x(), &state.y()); + for event in event_pump.poll_iter() { + match event { + Event::Quit {..} | + Event::KeyDown { keycode: Some(Keycode::Escape), .. } => { + break 'running + }, + _ => {} + } + } + + ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 120)); + } +} diff --git a/src/bin/1-5-normalize.rs b/src/bin/1-5-normalize.rs deleted file mode 100644 index e7c50b5..0000000 --- a/src/bin/1-5-normalize.rs +++ /dev/null @@ -1,107 +0,0 @@ -extern crate sdl2; - -use sdl2::pixels::Color; -use sdl2::event::Event; -use sdl2::keyboard::Keycode; -use sdl2::rect::{Rect}; -use sdl2::render::WindowCanvas; -use std::time::Duration; - -struct ObjectG{ - x: i32, - y: i32, - screen_width: i32, - screen_height: i32, - vx: i32, - vy: i32, -} - -fn distance(x: f64,y: f64,x2: f64,y2: f64) -> f64 { - ((x2 - x).powi(2) + (y2 - y).powi(2)).sqrt() -} - -impl ObjectG{ - fn walk(&mut self, x: &i32, y: &i32) { - self.vx = x - self.x; - self.vy = y - self.y; - - // normalize is vec / mag - // this normalize is a bit more complicated because of me using screen / 2 - // normally you use the first 2 of distance at 0,0 - - //get the distance - let mag: f64 = distance((self.screen_width/2) as f64, (self.screen_height/2) as f64,*x as f64,*y as f64); - //normalize - self.vx = ((self.vx as f64 / mag ) * 50.0) as i32; - self.vy = ((self.vy as f64 / mag ) * 50.0) as i32; - - self.vx = self.vx + self.screen_width/2; - self.vy = self.vy + self.screen_height/2; - - if self.x < 0 { self.x = 0 } - if self.y < 0 { self.y = 0 } - if self.x > self.screen_width { self.x = self.screen_width } - if self.y > self.screen_height{ self.y = self.screen_height } - } -} - -fn draw(canvas: &mut WindowCanvas, obj: &mut ObjectG, mx: &i32, my: &i32){ - - canvas.set_draw_color(Color::RGB(0,0,0)); - canvas.clear(); - canvas.set_draw_color(Color::RGB(150,50,255)); - - obj.walk(mx,my); - canvas.fill_rect(Rect::new(obj.vx, obj.vy, 8, 8)).err(); - - canvas.present(); -} - - - -fn main() { - let sdl2_context = sdl2::init().unwrap(); - let video_subsystem = sdl2_context.video().unwrap(); - - - let width: u32=400; - let height: u32=400; - - let window = video_subsystem.window("normalize", width, height) - .position_centered() - .build() - .unwrap(); - - let mut canvas = window.into_canvas().build().unwrap(); - - - let mut obj = ObjectG{ - x: width as i32 /2, - y: height as i32 /2, - screen_width: width as i32, - screen_height: height as i32, - vx: 0, - vy: 0, - }; - - canvas.set_draw_color(Color::RGB(0,0,0)); - canvas.clear(); - - let mut event_pump = sdl2_context.event_pump().unwrap(); - draw(&mut canvas, &mut obj, &0, &0); - 'running: loop { - let state = event_pump.mouse_state(); - draw(&mut canvas, &mut obj, &state.x(), &state.y()); - for event in event_pump.poll_iter() { - match event { - Event::Quit {..} | - Event::KeyDown { keycode: Some(Keycode::Escape), .. } => { - break 'running - }, - _ => {} - } - } - - ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 120)); - } -} -- cgit v1.3