From b2ec53525ded322cfbaae865fdb5d9e7f7d41cbe Mon Sep 17 00:00:00 2001 From: Jon Janzen Date: Sun, 3 Oct 2021 16:19:44 -0600 Subject: [PATCH] added draw cross --- src/main.rs | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 09c5c2c..ee7a673 100644 --- a/src/main.rs +++ b/src/main.rs @@ -74,6 +74,11 @@ fn write_canvas_to_file(canvas: Canvas, file_path: &str) { } +fn write_point(canvas: &mut Canvas, point: &Tuple, color: Color) { + canvas.write_pixel(point.x() as usize, point.y() as usize, color); +} + + fn before_clock() { let env = init_env(); @@ -151,6 +156,19 @@ fn main() { clock(); } +fn draw_cross(canvas: &mut Canvas, start: &Tuple, color: Color) { + canvas.write_pixel(start.x() as usize, start.y() as usize, color); + + let top = start * &Matrix::translation(1.0, 0.0, 0.0); + write_point(canvas, &top, color); + let right = start * &Matrix::translation(0.0, 1.0, 0.0); + write_point(canvas, &right, color); + let bottom = start * &Matrix::translation(-1.0, 0.0, 0.0); + write_point(canvas, &bottom, color); + let left = start * &Matrix::translation(0.0, -1.0, 0.0); + write_point(canvas, &left, color); +} + fn clock() { println!("Starting clock!"); @@ -158,17 +176,18 @@ fn clock() { let color = Color::new(1.0, 0.0, 0.0); let middle = 1024.0 / 2.0; canvas.write_pixel(middle as usize, middle as usize, Color::new(0.0, 1.0, 0.0)); + let middle_point = &Tuple::point_zero() * &Matrix::translation(middle, middle, 0.0); + draw_cross(&mut canvas, &middle_point, Color::new(0.0, 1.0, 0.0)); for i in 1..13 { - let twelve = Tuple::point_zero(); + let center = Tuple::point_zero(); - let twelve = &Matrix::translation(0.0, -24.0, 0.0) * &twelve; - let twelve = &Matrix::scaling(0.0, 10.0, 0.0) * &twelve; - let twelve = &Matrix::rotation_z((i as f32 / 12.0) * (2.0 * PI)) * &twelve; - let twelve = &Matrix::translation(middle, middle, 0.0) * &twelve; - - canvas.write_pixel(twelve.x() as usize, twelve.y() as usize, color); + let center = &Matrix::translation(0.0, -24.0, 0.0) * ¢er; + let center = &Matrix::scaling(0.0, 10.0, 0.0) * ¢er; + let center = &Matrix::rotation_z((i as f32 / 12.0) * (2.0 * PI)) * ¢er; + let center = &Matrix::translation(middle, middle, 0.0) * ¢er; + draw_cross(&mut canvas, ¢er, color); } write_canvas_to_file(canvas, "clock.ppm");