Advertisement
Guest User

Untitled

a guest
May 25th, 2025
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.64 KB | Source Code | 0 0
  1. use rand::Rng;
  2. use std::collections::HashMap;
  3. use std::fs::File;
  4. use std::io::Write;
  5.  
  6. const WIDTH: i32 = 640;
  7. const HEIGHT: i32 = 640;
  8. const N_OF_POINTS: i32 = 10;
  9.  
  10. fn dist(x1: i32, y1: i32, x2: i32, y2: i32) -> f64 {
  11.     let result: f64 = ((x1 - x2).pow(2) as f64 + (y1 - y2).pow(2) as f64).sqrt();
  12.     return result;
  13. }
  14.  
  15. #[derive(Debug)]
  16. struct Point {
  17.     x: i32,
  18.     y: i32,
  19.     r: i32,
  20.     g: i32,
  21.     b: i32,
  22. }
  23.  
  24. pub fn main(filename: &str) {
  25.     let mut rng = rand::rng();
  26.     let mut file = File::create(filename).unwrap();
  27.     let header = format!("P3\n{}\n{}\n255\n", WIDTH, HEIGHT);
  28.     file.write_all(header.as_bytes()).unwrap();
  29.  
  30.     let mut points: HashMap<i32, Point> = HashMap::new();
  31.  
  32.     // Create random points
  33.     for index in 0..N_OF_POINTS {
  34.         let x = rng.random_range(0..WIDTH);
  35.         let y = rng.random_range(0..HEIGHT);
  36.         let r = rng.random_range(0..=255);
  37.         let g = rng.random_range(0..=255);
  38.         let b = rng.random_range(0..=255);
  39.  
  40.         let point = Point { x, y, r, g, b };
  41.  
  42.         points.insert(index, point);
  43.     }
  44.  
  45.     for y in 0..HEIGHT {
  46.         for x in 0..WIDTH {
  47.             let mut chosen_color = String::new();
  48.             let mut closest_distance: f64 = f64::MAX;
  49.  
  50.             for (_, point) in &points {
  51.                 let d = dist(x, y, point.x, point.y);
  52.                 if d < closest_distance {
  53.                     closest_distance = d;
  54.                     chosen_color = format!("{} {} {}\n", point.r, point.g, point.b).to_string();
  55.                 }
  56.             }
  57.  
  58.             file.write_all(chosen_color.as_bytes()).unwrap();
  59.         }
  60.     }
  61. }
  62.  
Tags: rust
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement