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() {
|
fn before_clock() {
|
||||||
let env = init_env();
|
let env = init_env();
|
||||||
|
|
||||||
@@ -151,6 +156,19 @@ fn main() {
|
|||||||
clock();
|
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() {
|
fn clock() {
|
||||||
println!("Starting clock!");
|
println!("Starting clock!");
|
||||||
|
|
||||||
@@ -158,17 +176,18 @@ fn clock() {
|
|||||||
let color = Color::new(1.0, 0.0, 0.0);
|
let color = Color::new(1.0, 0.0, 0.0);
|
||||||
let middle = 1024.0 / 2.0;
|
let middle = 1024.0 / 2.0;
|
||||||
canvas.write_pixel(middle as usize, middle as usize, Color::new(0.0, 1.0, 0.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 {
|
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 center = &Matrix::translation(0.0, -24.0, 0.0) * ¢er;
|
||||||
let twelve = &Matrix::scaling(0.0, 10.0, 0.0) * &twelve;
|
let center = &Matrix::scaling(0.0, 10.0, 0.0) * ¢er;
|
||||||
let twelve = &Matrix::rotation_z((i as f32 / 12.0) * (2.0 * PI)) * &twelve;
|
let center = &Matrix::rotation_z((i as f32 / 12.0) * (2.0 * PI)) * ¢er;
|
||||||
let twelve = &Matrix::translation(middle, middle, 0.0) * &twelve;
|
let center = &Matrix::translation(middle, middle, 0.0) * ¢er;
|
||||||
|
|
||||||
canvas.write_pixel(twelve.x() as usize, twelve.y() as usize, color);
|
|
||||||
|
|
||||||
|
draw_cross(&mut canvas, ¢er, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
write_canvas_to_file(canvas, "clock.ppm");
|
write_canvas_to_file(canvas, "clock.ppm");
|
||||||
|
|||||||
Reference in New Issue
Block a user