lj_qualibration/src/draw.rs

89 lines
1.8 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_dotted(
p0: &Point,
p1: &Point,
nb_all: usize,
nb_visible: usize,
first_on: bool,
) -> Vec<Point> {
let mut pl = vec![];
let black = Color { r: 0, g: 0, b: 0 };
let cmp = if first_on { 0 } else { 1 };
for _ in 0..nb_all {
pl.push(Point {
color: black,
..*p0
});
}
for i in 0..nb_visible {
pl.push(Point {
color: if i % 2 == cmp { p1.color } else { black },
..*p1
});
}
if nb_visible > nb_all {
return pl;
}
for _ in 0..(nb_all - nb_visible) {
pl.push(Point {
color: black,
..*p1
});
}
pl
}
pub fn draw_line(p0: &Point, p1: &Point, nb_all: usize, nb_visible: usize) -> Vec<Point> {
let mut pl = vec![];
let black = Color { r: 0, g: 0, b: 0 };
for _ in 0..nb_all {
pl.push(Point {
color: black,
..*p0
});
}
for _ in 0..nb_visible {
pl.push(*p1);
}
if nb_visible > nb_all {
return pl;
}
for _ in 0..(nb_all - nb_visible) {
pl.push(Point {
color: black,
..*p1
});
}
pl
}
#[allow(dead_code)]
pub fn draw(_time: f64) -> Vec<Point> {
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,
},
});
}
v
}