LrCameraSpheric.cpp 2.39 KB
Newer Older
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
/**
 * @brief Camera Spheric
 * @file LrCameraSpheric.h
 * @date Dimanche 16 mars 2008
 * @note 
 * @author Josselin Francois
 * @author Michael Nauge
 * @author Axel Richard
 * @author Hervé Souchaud
 * @author Emeric Verschuur
 * 
 * Description du fichier ici
 */

#if defined HAVE_CONFIG_H
#include "config.h"
#endif

#include "LrCameraSpheric.h"

// #################################################################

LrCameraSpheric::LrCameraSpheric()
:
    LrCamera()
{
}

// #################################################################
    
LrCameraSpheric::LrCameraSpheric(const LrCameraSpheric &source)
:
    LrCamera(source)
{
}
    
// #################################################################

LrCameraSpheric * LrCameraSpheric::clone() const
{
    return new LrCameraSpheric(*this);
}

// #################################################################

LrCameraSpheric::LrCameraSpheric(const LrPoint &position,
        const LrVector &vertical, const LrVector &direction,
        Real angleRadH, Real angleRadV)
:
    LrCamera(position,vertical,direction,angleRadH,angleRadV)
{
}

// #################################################################
    
LrCameraSpheric::~LrCameraSpheric()
{
}

// #################################################################

LrCameraSpheric & LrCameraSpheric::operator = (const LrCameraSpheric &source)
{
    if (this == &source)
        return *this;

    LrCamera::operator = (source);

    return *this;
}

// #################################################################

bool operator == (const LrCameraSpheric &lhs, const LrCameraSpheric &rhs)
{
    return ((LrCameraSpheric::LrCamera &) lhs == (LrCameraSpheric::LrCamera &) rhs);
}

// #################################################################

bool operator != (const LrCameraSpheric &lhs, const LrCameraSpheric &rhs)
{
    return (! (lhs == rhs));
}

// #################################################################

LrRay LrCameraSpheric::getRay(Real u, Real v) const {
    
90 91 92 93
    Real cosTmp = cos(v * m_angleRadV);
    
    LrVector vectorRay = cosTmp * cos(u * m_angleRadH) * m_direction 
                        + cosTmp * sin(u * m_angleRadH) * m_horizontal
94 95
                        - sin(v * m_angleRadV) * m_vertical;
    
96
    vectorRay.normalize(); // Par précaution
97 98 99 100 101 102 103
    
    return LrRay(vectorRay,m_position);
    
}

// #################################################################