polygons
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.9 KiB |
BIN
imgs/square.png
Before Width: | Height: | Size: 2.5 KiB |
41
src/main.rs
|
@ -3,43 +3,32 @@ mod turtle;
|
||||||
use turtle::{defaults, Turtle};
|
use turtle::{defaults, Turtle};
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn square() {
|
fn polygon(corners_number: u32, steps_count: u32, output_path: &'static str) {
|
||||||
let mut turtle = Turtle::new();
|
|
||||||
let default_pos = defaults::position();
|
|
||||||
let steps_count = 20;
|
|
||||||
|
|
||||||
turtle.set_pos((
|
|
||||||
default_pos.0 - (turtle.step_length() * steps_count / 2) as i32,
|
|
||||||
default_pos.1 + (turtle.step_length() * steps_count / 2) as i32
|
|
||||||
));
|
|
||||||
|
|
||||||
turtle.left_forward(90.0, steps_count);
|
|
||||||
for _ in 0..3 {
|
|
||||||
turtle.right_forward(90.0, steps_count);
|
|
||||||
}
|
|
||||||
turtle.save("imgs/square.png").unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
fn circle() {
|
|
||||||
let mut turtle = Turtle::new();
|
let mut turtle = Turtle::new();
|
||||||
let default_pos = defaults::position();
|
let default_pos = defaults::position();
|
||||||
|
|
||||||
let circumference = (36 * 2 * defaults::STEP_LENGTH) as f64;
|
let degree = 360.0 / corners_number as f64;
|
||||||
|
let circumference = (corners_number * steps_count * defaults::STEP_LENGTH) as f64;
|
||||||
let radius = circumference / (2.0 * std::f64::consts::PI);
|
let radius = circumference / (2.0 * std::f64::consts::PI);
|
||||||
|
|
||||||
turtle.set_pos((
|
turtle.set_pos((
|
||||||
default_pos.0 - (turtle.step_length() * 2 / 2) as i32,
|
default_pos.0 - (turtle.step_length() * steps_count / 2) as i32,
|
||||||
default_pos.1 - radius as i32
|
default_pos.1 - radius as i32
|
||||||
));
|
));
|
||||||
|
|
||||||
for _ in 0..36 {
|
for _ in 0..corners_number {
|
||||||
turtle.forward_right(2, 10.0);
|
turtle.forward_right(steps_count, degree);
|
||||||
}
|
}
|
||||||
turtle.save("imgs/circle.png").unwrap();
|
turtle.save(output_path).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
square();
|
polygon(3, 10, "imgs/polygons/triangle.png");
|
||||||
circle();
|
polygon(4, 10, "imgs/polygons/square.png");
|
||||||
|
polygon(5, 10, "imgs/polygons/pentagon.png");
|
||||||
|
polygon(6, 10, "imgs/polygons/hexagon.png");
|
||||||
|
polygon(7, 10, "imgs/polygons/heptagon.png");
|
||||||
|
polygon(8, 10, "imgs/polygons/octagon.png");
|
||||||
|
polygon(9, 5, "imgs/polygons/nonagon.png");
|
||||||
|
polygon(36, 2, "imgs/polygons/circle.png");
|
||||||
}
|
}
|
||||||
|
|