La bibliothèque graphique de Piston offre une fonction permettant de tracer une ligne entre deux points, mais rien pour plus de deux. Comment puis-je dessiner efficacement un chemin à travers plusieurs points sans devoir tracer une ligne pour chaque segment?Dessiner efficacement des trajectoires à l'aide d'un piston
Disons que j'ai le code suivant:
extern crate piston_window;
use piston_window::*;
fn main() {
let mut window: PistonWindow = WindowSettings::new("Hello Piston!", [640, 480])
.exit_on_esc(true).build().unwrap();
while let Some(e) = window.next() {
window.draw_2d(&e, |c, g| {
clear([1.0; 4], g);
let points = [
[100., 100.],
[200., 200.],
[150., 350.],
//...
];
let mut prev = points[0];
for pt in points[1..].iter() {
line([0., 0., 0., 255.], 1., [
prev[0], prev[1], pt[0], pt[1]
], c.transform, g);
prev = *pt;
}
});
}
}
Est-il possible de le transformer en quelque chose comme ça?
extern crate piston_window;
use piston_window::*;
fn main() {
let mut window: PistonWindow = WindowSettings::new("Hello Piston!", [640, 480])
.exit_on_esc(true).build().unwrap();
while let Some(e) = window.next() {
window.draw_2d(&e, |c, g| {
clear([1.0; 4], g);
let points = [
[100., 100.],
[200., 200.],
[150., 350.],
//...
];
path([0., 0., 0., 255.], 1., &points, c.transform, g);
});
}
}
m'a renvoyé à la bibliothèque lyon mais je ne sais pas comment l'utiliser avec le piston.
Comment pouvez-vous dessiner un tracé sans dessiner chaque segment? Et qu'est-ce qui est inefficace dans votre boucle for? – interjay
Je cherche quelque chose qui dessinerait tous les segments en continu sans avoir à envoyer une commande de dessin pour chaque segment individuel. –