Subversion Repositories gelsvn

Rev

Rev 346 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
346 awk 1
#include "camera.hpp"
2
 
3
using namespace CGLA;
4
 
348 awk 5
camera::camera(const CGLA::Vec3f& eye,
6
               const CGLA::Vec3f& cnt,
7
               const CGLA::Vec3f& up,
8
               float focal)
346 awk 9
{
348 awk 10
    eye_ = eye;
346 awk 11
 
348 awk 12
    z_ = normalize(eye - cnt);
346 awk 13
 
348 awk 14
    x_ = normalize(cross(up, z_));
15
    y_ = cross(z_, x_);
346 awk 16
 
348 awk 17
    x_ *= 0.012f;
18
    y_ *= 0.012f;
19
 
20
    focal_ = focal;
346 awk 21
}
22
 
23
ray camera::generate(const Vec2f& uv) const
24
{
348 awk 25
    Vec2f xy = 2.f * uv - Vec2f(1.f);
346 awk 26
 
348 awk 27
    ray r;
28
    r.origin = eye_;
29
    r.direction = normalize(-focal_*z_ + xy[0]*x_ + xy[1]*y_);
30
    r.depth = 0;
31
    r.distance = std::numeric_limits<float>::infinity();
32
    return r;
346 awk 33
}
34
 
35
//02566 framework, Anders Wang Kristensen, awk@imm.dtu.dk, 2007