Commit 37886e91 authored by paps's avatar paps
Browse files

No commit message

No commit message
parent 77051b8c
Loading
Loading
Loading
Loading
+80 −0
Original line number Diff line number Diff line
/**
 * @brief PertNormalPerlin : les perturbations de normal d'une optic pour une entite plan.
 * @file LrPertNormalPerlinPlan.h
 * @date Jeudi 14 Fevrier 2008
 * @note 
 * @author Josselin Francois
 * @author Michael Nauge
 * @author Axel Richard
 * @author Hervé Souchaud
 * @author Emeric Verschuur
 * 
 * 
 * Classe représentant une perturbation de normal utilisant un bruit de perlin
 * 
 */ 

#ifndef LRPERTNORMAL_PERLIN_PLAN_H
#define LRPERTNORMAL_PERLIN_PLAN_H

#include "LrPertNormal.h"
#include "LrPerlin.h"

/**
 * @brief PertNormal : les perturbations de normal d'une optic.
 * 
 * Classe représentant une perturbation de normal utilisant un bruit de perlin
 * 
 */
class LrPertNormalPerlinPlan : public LrPertNormal
{
    public:
    
        /**
        * @brief LrPertNormalPerlinBasic constructor.
        */
        LrPertNormalPerlinPlan();
    
        /**
        * @brief LrPertNormalPerlin copy constructor
        * @param source LrPertNormalPerlin object reference.
        */
        LrPertNormalPerlinPlan(const LrPertNormalPerlinPlan &source);
    
        /**
        * @brief LrPertNormalPerlin constructeur personnel
        * @param coefficient de perturbation de la normale
        */
        LrPertNormalPerlinPlan(Real val_bump);
    
        /**
        * @brief LrPertNormalPerlin clone.
        * @return LrPertNormalPerlin pointer object.
        */
        LrPertNormalPerlinPlan * clone() const;
    
        /**
        * @brief LrPertNormalPerlin destructor
        */
        virtual ~LrPertNormalPerlinPlan();
    
        /**
        * @brief accessors
        * Obtenir une normale non perturber
        * @param u real coordonnee parametrique horizontale
        * @param v real coordonnee parametrique verticale
        * @param tangent LrVector la tangent fourni par la geometrie
        * @param N LrVector Normale fourni par la geometrie
        */
        virtual LrVector getNormal(Real u, Real v,
                                   const LrVector &tangent,
                                   const LrVector &N, const LrPoint &point) const;
    
    private : 
    
        mutable LrPerlin m_perlin;
        Real m_bump;

};

#endif