From f3b0b1846c03bb2252830147481ba56056d6a405 Mon Sep 17 00:00:00 2001 From: Rosyid Haryadi Date: Sat, 1 Mar 2025 11:56:55 +0700 Subject: upd: color struct --- src/global.rs | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'src/global.rs') diff --git a/src/global.rs b/src/global.rs index 2f99cb9..b322746 100644 --- a/src/global.rs +++ b/src/global.rs @@ -3,8 +3,8 @@ use crate::calculus::calculus::Point3; // "Ideal" aspect ratio, allowing fraction -pub const ASPECT_RATIO: f32 = 9.0f32 / 5.0f32; -pub const IMG_WIDTH: usize = 1000; +pub const ASPECT_RATIO: f32 = 16.0f32 / 9.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 }; @@ -28,6 +28,11 @@ impl Pixel { b: (255.999 * b) as u8, } } + + pub fn from_color(color: &Color) -> Self { + let (r, g, b) = (color.r, color.g, color.b); + Self::from_frac(r, g, b) + } } impl Default for Pixel { @@ -37,3 +42,31 @@ impl Default for Pixel { } pub type DisplayBuffer = [[Pixel; IMG_WIDTH]; IMG_HEIGHT]; + +pub struct Color { + pub r: f32, + pub g: f32, + pub b: f32, +} + +impl Color { + pub fn new(r: f32, g: f32, b: f32) -> Self { + Self { r, g, b } + } + + pub fn mul_scalar(&self, scalar: f32) -> Color { + Self { + r: self.r * scalar, + g: self.g * scalar, + b: self.b * scalar, + } + } + + pub fn add(&self, other: &Self) -> Color { + Self { + r: self.r + other.r, + g: self.g + other.g, + b: self.b + other.b + } + } +} -- cgit v1.2.3-70-g09d2