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
|
use cgmath::{Vector3, vec3};
use crate::ray::Ray;
pub struct Camera {
origin: Vector3<f64>,
lower_left_corner: Vector3<f64>,
horizontal: Vector3<f64>,
vertical: Vector3<f64>
}
impl Camera {
pub fn new() -> Camera {
Camera {
origin: vec3(0.0, 0.0, 0.0),
lower_left_corner: vec3(-2.0, -1.0, -1.0),
horizontal: vec3(4.0, 0.0, 0.0),
vertical: vec3(0.0, 2.0, 0.0)
}
}
pub fn get_ray(&self, u: f64, v: f64) -> Ray {
Ray::new(self.origin,
self.lower_left_corner + u * self.horizontal + v * self.vertical)
}
}
|