summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosyid Haryadi <rosyid_haryadi@protonmail.com>2025-02-26 17:15:56 +0700
committerRosyid Haryadi <rosyid_haryadi@protonmail.com>2025-02-26 17:15:56 +0700
commitafa026412fad832c85d28ddedb6b4bb74a4042d1 (patch)
treef21da6c69922d7785ae0b1005725c389d867bcb1
parent2961d488078fd3e8297fa5c98232f1d998069fa7 (diff)
fix index, add another renderer
-rw-r--r--src/main.rs2
-rw-r--r--src/renderer.rs16
2 files changed, 17 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 65dc271..6e1b9e6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -25,7 +25,7 @@ fn test_render(data: &mut DisplayBuffer) {
let g = j as f32 / IMG_HEIGHT as f32;
let b = 0.0f32;
- data[i][j] = Pixel::from_frac(r, g, b);
+ data[j][i] = Pixel::from_frac(r, g, b);
})
});
}
diff --git a/src/renderer.rs b/src/renderer.rs
index 28dbb36..7815673 100644
--- a/src/renderer.rs
+++ b/src/renderer.rs
@@ -1,2 +1,18 @@
+use crate::calculus::calculus::Vec3;
+use crate::global::{CAMERA_CENTER, FOCAL_LENGTH, VIEWPORT_HEIGHT, VIEWPORT_WIDTH};
+
fn render() {
+ let viewport_hor_vector = Vec3{ x: VIEWPORT_WIDTH as f32, y: 0.0, z: 0.0 };
+ let viewport_ver_vector = Vec3 { x: 0.0, y: -1f32 * VIEWPORT_HEIGHT as f32, z: 0.0 };
+
+ let delta_pixel_u = viewport_hor_vector.scalar_mul(1.0 / VIEWPORT_WIDTH as f32);
+ let delta_u = viewport_ver_vector.scalar_mul(1.0 / VIEWPORT_WIDTH as f32);
+
+ let viewport_upper_left = CAMERA_CENTER
+ .sub(&Vec3 { x: 0f32, y: 0f32, z: FOCAL_LENGTH})
+ .sub(&viewport_hor_vector.scalar_mul(0.5))
+ .sub(&viewport_ver_vector.scalar_mul(0.5));
+ let pixel_upper_left = viewport_upper_left.add(
+ &delta_pixel_u.add(&delta_pixel_u).scalar_mul(0.5)
+ );
} \ No newline at end of file