added draw cross

This commit is contained in:
Jon Janzen
2021-10-03 16:19:44 -06:00
parent 0b3132ee4f
commit b2ec53525d

View File

@@ -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) * &center;
let center = &Matrix::scaling(0.0, 10.0, 0.0) * &center;
let center = &Matrix::rotation_z((i as f32 / 12.0) * (2.0 * PI)) * &center;
let center = &Matrix::translation(middle, middle, 0.0) * &center;
draw_cross(&mut canvas, &center, color);
}
write_canvas_to_file(canvas, "clock.ppm");