summaryrefslogtreecommitdiff
path: root/src/global.rs
blob: 932daa20caa4c1fabe425bb1563e285aefe77f60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use crate::calculus::calculus::Point3;



// "Ideal" aspect ratio, allowing fraction
pub const ASPECT_RATIO: f32 = 9.0f32 / 5.0f32;
pub const IMG_WIDTH: usize = 400;
const IMG_HEIGHT_TMP: usize = (IMG_WIDTH as f32 / ASPECT_RATIO) as usize;
pub const IMG_HEIGHT: usize = if (IMG_HEIGHT_TMP < 1) { 1 } else { IMG_HEIGHT_TMP };

pub const VIEWPORT_HEIGHT: usize = 2;
pub const VIEWPORT_WIDTH: usize = VIEWPORT_HEIGHT * (IMG_WIDTH / IMG_HEIGHT);
pub const FOCAL_LENGTH: f32 = 2.0;
pub const CAMERA_CENTER: Point3 = Point3 { x: 0f32, y: 0f32, z: 0f32 };

#[derive(Debug, Copy, Clone)]
pub struct Pixel {
    pub r: u8,
    pub g: u8,
    pub b: u8,
}

impl Pixel {
    pub fn from_frac(r: f32, g: f32, b: f32) -> Self {
        Self {
            r: (255.999 * r) as u8,
            g: (255.999 * g) as u8,
            b: (255.999 * b) as u8,
        }
    }
}

impl Default for Pixel {
    fn default() -> Self {
        Pixel { r:0, g:0, b:0 }
    }
}

pub type DisplayBuffer = [[Pixel; IMG_WIDTH]; IMG_HEIGHT];