From 1fe3cfe345bb071a1cad5bd9614a60b672f82e6c Mon Sep 17 00:00:00 2001 From: jacob janzen Date: Sun, 28 Aug 2022 10:49:38 -0500 Subject: fixed rotation algorithm updated author --- output.gif | Bin 13447601 -> 17057577 bytes src/lib.rs | 31 +++++++++++++++++++++++-------- src/main.rs | 1 + 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/output.gif b/output.gif index 45151dc..7007ddb 100644 Binary files a/output.gif and b/output.gif differ diff --git a/src/lib.rs b/src/lib.rs index 760db83..82aa59e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -109,10 +109,12 @@ impl Image { let pos = 2.0 * PI * frame as f64 / self.frames as f64; for ellipse in &mut self.ellipses { - let radius = (ellipse.height * ellipse.width) - / (ellipse.width * ellipse.width * (ellipse.angle + pos).sin() - + ellipse.height * ellipse.height * (ellipse.angle + pos).sin()) - .sqrt(); + let sin_theta = (ellipse.angle + pos).sin(); + let cos_theta = (ellipse.angle + pos).sin(); + let a = ellipse.width; + let b = ellipse.height; + let radius = + (a * b) / (a * a * sin_theta * sin_theta + b * b * cos_theta * cos_theta).sqrt(); ellipse.curr_point.x = (ellipse.centre.x as f64 + radius * pos.sin()) as i64; ellipse.curr_point.y = (ellipse.centre.y as f64 + radius * pos.cos()) as i64; } @@ -144,11 +146,24 @@ impl Image { for y in 0..self.height { for x in 0..self.width { let index = y as usize * self.width as usize + x as usize; - let val = 0xFF - (0xFF as f64 * self.point_data[index].min_dist) as u8; + //let val = 0xFF - (0xFF as f64 * self.point_data[index].min_dist) as u8; + let red; + let green; + let blue; + + if self.point_data[index].min_dist < 0.5 { + red = 0xFF - (102.0 * self.point_data[index].min_dist) as u8; + green = 0xFF - (512.0 * self.point_data[index].min_dist) as u8; + blue = green; + } else { + red = 0xFF - (408.0 * (self.point_data[index].min_dist - 0.5) + 51.0) as u8; + green = 0; + blue = 0; + } self.set_pixel( - 0xCC, - val, - val, + red, + green, + blue, Point { x: x as i64, y: y as i64, diff --git a/src/main.rs b/src/main.rs index ae799e6..faff0eb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,5 +40,6 @@ fn main() { // Write frame to file encoder.write_frame(&frame).unwrap(); + print!("="); } } -- cgit v1.2.3