pour l'instant le programe detecte chacun des bord puis recadre le trapeze en carrer avec une marge en cas de depassement.
54 lines
1.1 KiB
Rust
54 lines
1.1 KiB
Rust
// This is where you can put your custom code
|
|
|
|
use crate::{Color, Point};
|
|
|
|
const RADIUS: f32 = 2000.0;
|
|
const X_CENTER: f32 = 2047.0;
|
|
const Y_CENTER: f32 = 2047.0;
|
|
|
|
pub fn draw_line(
|
|
p1: &Point,
|
|
p2: &Point,
|
|
nb1: usize,
|
|
nb2: usize,
|
|
) -> Result<Vec<Point>, Box<dyn std::error::Error>> {
|
|
let mut pl = vec![];
|
|
let black = Color { r: 0, g: 0, b: 0 };
|
|
|
|
for _ in 0..nb1 {
|
|
pl.push(Point {
|
|
color: black,
|
|
..*p1
|
|
});
|
|
}
|
|
for _ in 0..nb2 {
|
|
pl.push(*p2);
|
|
}
|
|
for _ in 0..(nb1 - nb2) {
|
|
pl.push(Point {
|
|
color: black,
|
|
..*p2
|
|
});
|
|
}
|
|
|
|
Ok(pl)
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub fn draw(_time: f64) -> Result<Vec<Point>, Box<dyn std::error::Error>> {
|
|
let mut v: Vec<Point> = vec![];
|
|
for i in 0..128 {
|
|
let a = i as f32 / 128.0 * std::f32::consts::PI * 2.0;
|
|
v.push(Point {
|
|
x: (X_CENTER + a.cos() * RADIUS) as f32,
|
|
y: (Y_CENTER + a.sin() * RADIUS) as f32,
|
|
color: Color {
|
|
r: 255,
|
|
g: 255,
|
|
b: 255,
|
|
},
|
|
});
|
|
}
|
|
Ok(v)
|
|
}
|