From 7dbb1d63007f4e5eab2a39f5e84780bbf264397a Mon Sep 17 00:00:00 2001 From: DBA_3 <yacine.acheroufkebir@gmail.com> Date: Thu, 9 Jan 2020 19:04:40 +0100 Subject: [PATCH] doxygen --- quad.h | 2 +- shape.h | 37 ++++++++++++++++++++++++++++++++++++- sphere.h | 32 ++++++++++++++++++++++++++++++-- vector3f.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 115 insertions(+), 7 deletions(-) diff --git a/quad.h b/quad.h index 048319e..51ff31e 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 ed9450d..4f6acb7 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 1e26e5d..a2e7c2c 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 9179c16..b6ba1e3 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(); }; -- GitLab