added draw cross
This commit is contained in:
33
src/main.rs
33
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");
|
||||
|
||||
Reference in New Issue
Block a user