Extract camera→ray conversion
This commit is contained in:
parent
e9993182bf
commit
d8eed54c8b
|
|
@ -153,6 +153,14 @@ impl Space {
|
||||||
Boundary => panic!("Can't draw a line here!"),
|
Boundary => panic!("Can't draw a line here!"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn camera_ray_to_abs(&self, camera: Location, ray: Ray) -> Ray {
|
||||||
|
let pos = camera.pos;
|
||||||
|
let dir = camera.rot * ray.dir;
|
||||||
|
// TODO account for ray.pos
|
||||||
|
let dir = DT * self.tube.normalize_vec_at(pos, dir);
|
||||||
|
Ray { pos, dir }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Traceable for Space {
|
impl Traceable for Space {
|
||||||
|
|
@ -165,11 +173,7 @@ impl DebugTraceable for Space {
|
||||||
fn trace_dbg(&self, camera: Location, ray: Ray) -> (Vec<Hit>, RayPath) {
|
fn trace_dbg(&self, camera: Location, ray: Ray) -> (Vec<Hit>, RayPath) {
|
||||||
let mut points = vec![];
|
let mut points = vec![];
|
||||||
let mut hits = vec![];
|
let mut hits = vec![];
|
||||||
let mut ray = Ray {
|
let mut ray = self.camera_ray_to_abs(camera, ray);
|
||||||
pos: camera.pos,
|
|
||||||
dir: camera.rot * ray.dir,
|
|
||||||
}; // TODO account for ray.pos
|
|
||||||
ray.dir = self.tube.normalize_vec_at(ray.pos, ray.dir) * DT;
|
|
||||||
|
|
||||||
let trace_to_flat = |points: &mut Vec<Vec2>, ray| {
|
let trace_to_flat = |points: &mut Vec<Vec2>, ray| {
|
||||||
for ray in self.trace_iter(ray).skip(1) {
|
for ray in self.trace_iter(ray).skip(1) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user