From 343ccdd12a5467408ee74dc1e3332ee774143df6 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Mon, 16 Oct 2017 22:44:58 +0200 Subject: [PATCH] Compute angles for raycaster --- src/main.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5dca0c4..fb3da81 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,7 @@ struct Position { struct Player { pos: Position, - angle: f64, + angle: f64, // radian or degree } @@ -33,10 +33,10 @@ fn main() { Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, ]; - let mut player: Player; - player.pos.x = 2.0; - player.pos.y = 2.0; - player.angle = 0.0; + let mut player = Player { pos: Position { x: 2.0, y: 2.0}, angle: 0.0}; + + let horiz_fov = 90 as f64; + //let height_unit = 64; while let Some(event) = window.next() { let window_size = window.size(); @@ -64,6 +64,20 @@ fn main() { [0.0, h / 2.0, w, h / 2.0], context.transform, graphics); + + // Walls + let left = player.angle + (horiz_fov / 2.0); + let right = player.angle - (horiz_fov / 2.0); + // for every angle (range / w) + let step = (left - right) / w; + let mut ray_angle = left; + for n in 0..(window_size.width - 1) { + // cast a ray + // see what wall it hits + // compute wall height + // draw wall portion + ray_angle += step; + } }); } }