diff --git a/quad.h b/quad.h index 048319e851f8a8b4c24690efbbac4fe401a9f473..51ff31e367fb58d186f02f850ee79f45a172d438 100644 --- a/quad.h +++ b/quad.h @@ -60,7 +60,7 @@ class Quad : public Shape }; /*! - * \brief Opérateur d'affichage du centre + * \brief Opérateur d'affichage des paramètres du Quad */ std::ostream & operator<<(std::ostream & st, const Quad & q); diff --git a/shape.h b/shape.h index ed9450d1b90bd1eb8e71174d0d2187bed7a536f7..4f6acb769b480ba132dc685170b4552cf3f0f090 100644 --- a/shape.h +++ b/shape.h @@ -1,21 +1,56 @@ #ifndef SHAPE_H #define SHAPE_H +/*! + * \file shapes.h + * \brief Implémentation abstraite des formes 3d + */ + #include "ray3f.h" #include "material.h" +/*! + * \class Shape + * \brief Classe abstraite des formes 3d + * + * Classe abstraite pure dont héritent les autres formes géométriques + */ class Shape { protected: - Material matter_; + Material matter_; /*!< Le matériau en quoi est fait la forme */ public: + /*! + * \brief Constructeur de Shape + * + * Constructeur de la classe abstraite Shape, appelé par les classes filles + */ Shape(Material matter) : matter_(matter) {} + + /*! + * \brief Test d'intersection + * + * Methode permetant de savoir si le rayon touche l'objet ou non + * \param ray Le rayon de lumière que l'on doit vérifier s'il touche l'objet ou non + * \return bool + */ virtual bool is_hit(const Ray3f ray) = 0; + + /*! + * \brief Récuperation du rayon réfléchi + * + * Methode permetant de savoir le point d'origine du rayon réfléchi et ça direction + * \param ray Le rayon de lumière qui doit traverser l'objet + * \return Ray3f + */ virtual Ray3f reflect(const Ray3f ray) const = 0; + /*! + * \brief Getter pour le materiau du Shape + */ Material matter() const {return matter_;} }; diff --git a/sphere.h b/sphere.h index 1e26e5d03a621bfb244baac682c552f613c90d96..a2e7c2c62cbeb6dd9142c8e4b5a63b88b39dd263 100644 --- a/sphere.h +++ b/sphere.h @@ -1,26 +1,54 @@ #ifndef SPHERE_H #define SPHERE_H +/*! + * \file sphere.h + * \brief Implementation des spheres + */ + #include "shape.h" +/*! + * \class Sphere + * \brief Classe representant une sphere + * + * Sphere representee dans l'espace par son centre et son rayon + */ class Sphere : public Shape { private: - Vector3f origin_; - float radius_; + Vector3f origin_; /*!< Centre de la sphere */ + float radius_; /*!< Rayon de la sphere */ public: + /*! + * \brief Constructeur + * + * Constructeur de la classe Sphere + * \param <matter> le materiau dont la sphere est composee + * \param <origin> le centre de la sphere + * \param <radius> le rayon de la sphere + */ Sphere(Material matter, Vector3f origin, float radius); bool is_hit(const Ray3f ray); Ray3f reflect(const Ray3f ray) const; + /*! + * \brief Getter pour le centre de la Sphere + */ Vector3f origin() const; + /*! + * \brief Getter pour le rayon de la Sphere + */ float radius() const; }; + /*! + * \brief Opérateur d'affichage des paramètres de la Sphere + */ std::ostream & operator<<(std::ostream & st, const Sphere & s); diff --git a/vector3f.h b/vector3f.h index 9179c1607c91259505c32f06dccf2f956369e5d6..b6ba1e3045bf52b45cdab965399061b76d95fde6 100644 --- a/vector3f.h +++ b/vector3f.h @@ -1,29 +1,74 @@ #ifndef VECTOR3F_H #define VECTOR3F_H + +/*! + * \file vector3f.h + * \brief Implémentation des vecteurs 3D + */ #include <ostream> + + +/*! + * \class Vector3f + * \brief Classe représentant un vecteur dans l'espace + * + * La classe permet de générer des vecteur et de réaliser des calculs sur ceux-ci + */ class Vector3f { private: - float x_; - float y_; - float z_; + float x_; /*!< coordonnée sur l'axe X*/ + float y_; /*!< coordonnée sur l'axe Y*/ + float z_; /*!< coordonnée sur l'axe Z*/ public: + + /*! + * \brief Constructeur + * + * Constructeur de la classe Vector3f + * \param <x> coordonnée du vecteur sur l'axe X + * \param <y> coordonnée du vecteur sur l'axe Y + * \param <z> coordonnée du vecteur sur l'axe Z + */ Vector3f(float x, float y, float z); + + /*! + * \brief Constructeur de copie + * + * Constructeur de copie de la classe Vector3f + * \param v le vecteur à copier dans this + */ Vector3f(const Vector3f & v); Vector3f(); Vector3f & operator=(const Vector3f & v); + /*! + * \brief Getter de la coordonnée sur l'axe X + */ float x() const; + /*! + * \brief Getter de la coordonnée sur l'axe Y + */ float y() const; + /*! + * \brief Getter de la coordonnée sur l'axe Z + */ float z() const; + /*! + * \brief calcul de la norme du vecteur + */ float norm() const; + + /*! + * \brief normalise le vecteur en divisant tous les paramètres par la norme + */ void normalize(); };