/*************************************/ /* Auteur : Rémi Synave */ /* Date de création : 01/03/07 */ /* Date de modification : 15/03/15 */ /* Version : 0.4 */ /*************************************/ /*************************************/ /* Auteur : Romain Leguay */ /* Nguyen Haiduong */ /* Solange Houeto */ /* Marianne Fichoux */ /* Date de modification : 06/06/09 */ /* Version : 0.2 */ /*************************************/ /***************************************************************************/ /* This file is part of a2ri. */ /* */ /* a2ri is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU Lesser General Public License as published */ /* by the Free Software Foundation, either version 3 of the License, or */ /* (at your option) any later version. */ /* */ /* a2ri is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU Lesser General Public License for more details. */ /* */ /* You should have received a copy of the GNU Lesser General Public */ /* License along with a2ri. */ /* If not, see . */ /***************************************************************************/ #ifndef OVERLAP__H #define OVERLAP__H #include #include #include #include "model.h" #include "boundingbox.h" #include "point.h" #include "util.h" /** Test de l'intersection d'une AABB avec une liste d'AABB @param min coin inférieur de la AABB @param max coin supérieur de la AABB @param listmin liste des coins inférieurs des AABB @param listmax liste des coins supérieurs des AABB @param size taille de la liste des AABB @return 1 si intersection, 0 sinon **/ int intersection_axis_aligned_bounding_box_with_axis_aligned_bounding_box_list ( const point3d * const min, const point3d * const max, const point3d * const listmin, const point3d * const listmax, int size); /** Test de l'instesection d'une bounding ball avec une liste de bounding ball @param cx coordonnée x du centre de la bounding ball @param cy coordonnée y du centre de la bounding ball @param cz coordonnée z du centre de la bounding ball @param rayon rayon de la bounding ball @param listx liste des coordonnées x des centres des bounding ball @param listy liste des coordonnées y des centres des bounding ball @param listz liste des coordonnées z des centres des bounding ball @param rayon liste des rayons des bounding ball @param nbelt taille de la liste @param alpha **/ int intersection_bounding_ball_with_bounding_ball_list ( const point3d * const c, double rayon, const point3d * const listcentre, const double * const listrayon, int nbelt, double alpha); /** Calcule le taux de recouvrement en utilisant les bounding ball de ritter @param base modèle de base @param m modèle dont on veux trouver le taux de recouvrement avec le modèle de base @param sensibility sensibilité du taux de recouvrement @return le taux de recouvrement trouvé **/ double a2ri_vf_bounding_ball_ritter_compute_overlap ( const vf_model * const base, const vf_model * const m, double sensibility); /** Calcule le taux de recouvrement en utilisant les bounding ball minimales @param base modèle de base @param m modèle dont on veux trouver le taux de recouvrement avec le modèle de base @param sensibility sensibilité du taux de recouvrement @return le taux de recouvrement trouvé **/ //Remarque : les maillages devraient etre qualifiés de const mais impossible a cause de l'utilisation de pthread double a2ri_vf_bounding_ball_minimale_compute_overlap ( vf_model * base, vf_model * m, double sensibility); /** Calcule le taux de recouvrement en utilisant les axis aligned bounding box @param base modèle de base @param m modèle dont on veux trouver le taux de recouvrement avec le modèle de base @return le taux de recouvrement trouvé **/ double a2ri_vf_axis_aligned_bounding_box_compute_overlap ( const vf_model * const base, const vf_model * const m); /** Calcule la liste des faces du modèle m s'intersectant avec le modèle base en utilisant les bounding ball de ritter. @param base modèle servant de base @param m modèle dont on cherche les faces s'intersectant avec le modèle de base @param list liste des faces s'intersectant @param size taille de la liste @param alpha variable alpha servant lors du test d'intesection @return aucun **/ void a2ri_vf_bounding_ball_ritter_find_face_overlapping ( const vf_model * const base, const vf_model * const m, int **list, int *size, double alpha); /** Calcule la liste des faces du modèle m s'intersectant avec le modèle base en utilisant les bounding ball de ritter. @param base modèle servant de base @param m modèle dont on cherche les faces s'intersectant avec le modèle de base @param list liste des faces s'intersectant @param size taille de la liste @param alpha variable alpha servant lors du test d'intesection @return aucun **/ void a2ri_vf_bounding_ball_minimale_find_face_overlapping ( const vf_model * const base, const vf_model * const m, int **list, int *size, double alpha); /** Calcule la liste des faces du modèle m s'intersectant avec le modèle base en utilisant les AABB @param base modèle servant de base @param m modèle dont on cherche les faces s'intersectant avec le modèle de base @param list liste des faces s'intersectant @param size taille de la liste @return aucun **/ void a2ri_vf_axis_aligned_bounding_box_find_face_overlapping ( const vf_model * const base, const vf_model * const m, int **listface, int *size); #endif